如何在Java中将字节数组转换为无符号128位整数?

时间:2015-03-25 11:19:05

标签: java bytearray md5 unsigned-integer

我正在尝试使用MD5散列字符串。我需要哈希值作为Java中的128位无符号整数。

MessageDigest md = MessageDigest.getInstance("MD5");

String toHash = "HashThis";
md.update(toHash.getBytes());
byte[] isHashed = md.digest();

如何将isHashed转换为整数?

2 个答案:

答案 0 :(得分:1)

使用BigInteger

BigInteger value = new BigInteger(isHashed);

要确保结果值为正(因为字节数组预期为2的补码),请确保最高有效位为零。这可以通过使数组1元素更大,第一个字节为0来轻松实现。

答案 1 :(得分:1)

Java没有128位的int类型。但它有一个BigInteger类,它有一个构造函数,根据需要采用signum和一个表示为byte []的大小。

BigInteger value=new BigInteger(1,isHashed);