我有一个在Java中生成MD5哈希的代码。它会将哈希值生成为字节数组"bytes",然后将其转换为整数并最终转换为字符串,如下所示:
byte[] bytes=md.digest(textToHash.getBytes());
StringBuilder sb=new StringBuilder();
for(int i=0;i<bytes.length;i++)
sb.append(Integer.toString((bytes[i] & 0xff) + 0x100, 16).substring(1));
我理解
bytes[i] & 0xff
将字节转换为32位长度的整数,将字节复制到整数的最低有效字节中:
然而,我不明白上述代码第4行括号中的+ 0x100, 16
是什么意思。感谢您的帮助。
16
是 基数 - 即基于 16 的十六进制。该代码基本上将1
输出为"01"
而不是"1"
。 - Bohemian