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

如何在Java中将字节数组转换为无符号128位整数?,java,bytearray,md5,unsigned-integer,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转换为整数?使用biginger BigInteger值=新的BigInteger(isHashed) 为确保

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

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

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

如何将isHashed转换为整数?

使用
biginger

BigInteger值=新的BigInteger(isHashed)


为确保结果值为正值(因为字节数组预期为2的补码),请确保最高有效位为零。通过将数组1元素变大,第一个字节为0,可以很容易地实现这一点。

Java没有128位的int类型。但它有一个BigInteger类,它有一个构造函数,根据您的需要,该构造函数接受符号和表示为字节[]的大小

BigInteger value=new BigInteger(1,isHashed);

好吧,它假设字节数组是2的补码,所以你可以在数组中添加一个零字节作为第一个字节来保证它。最好将注释的文本添加到答案中,否则它可能会在VLQ审查队列中关闭。。。。