如何在Java中将字节数组转换为无符号128位整数?
我正在尝试使用MD5散列字符串。我需要散列值作为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) 为确保
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审查队列中关闭。。。。