我正在使用一些示例java代码来制作md5哈希.一部分将结果从字节转换为十六进制数字的字符串:
byte messageDigest[] = algorithm.digest();
StringBuffer hexString = new StringBuffer();
for (int i=0;i<messageDigest.length;i++) {
hexString.append(Integer.toHexString(0xFF & messageDigest[i]));
}
Run Code Online (Sandbox Code Playgroud)
但是,由于toHexString显然会从前导零中掉落,所以它并不常用.那么,从字节数组到保持前导零的十六进制字符串的最简单方法是什么?
我需要将Java BigInteger实例转换为以字节为单位的值.从API中,我得到了这个方法toByteArray(),它返回一个包含这个BigInteger的二进制补码表示的byte [].
因为我的所有数字都是正128位(16字节)整数,所以我不需要2位补码形式给我128位+符号位(129位)......
有没有办法直接从BigInteger获得标准(没有2的补码形式)表示?
如果没有,我怎么能正确移位整个byte [17]数组以丢失符号位以获得一个byte [16]数组?