将128位数组最佳打包成数字

时间:2013-06-04 15:33:53

标签: java algorithm bit-manipulation

我有一个哈希值,根据某些条件(基本上是位图)设置/取消设置值。此哈希需要以尽可能最佳的方式存储为字符串(在blob中)。我想我可以使用一个位数组并将它们打包成一个数字并将此数字存储为字符串。关于如何做到这一点的任何想法?有更好的方法吗?

4 个答案:

答案 0 :(得分:3)

您可以使用BigInteger。它有一个以字节数组作为参数的构造函数,以及一个.toByteArray()来将数字作为字节数组:

final BigInteger myHash = new BigInteger(theByteArray);
final byte[] theArray = myHash.toByteArray();

答案 1 :(得分:0)

如果您需要将其存储为字符串,则应该对该数字进行base 64编码。您可以使用Apache Commons Codec中的Base64 class。 E.g。

String encoded = Base64.encodeBase64String(myBinaryData);

答案 2 :(得分:0)

我会使用两个long值或四个int值。你不会比这更有效率。如果您在任何情况下都需要转换为/从字节[],您可以使用byte []。

答案 3 :(得分:-2)

128位数组只是一个无符号长整数。非常容易和自然的包装。