在Java中,如何在保持前导零的同时将字节数组转换为十六进制数字的字符串?
我正在使用一些示例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]));
    }
但是,由于toHexString显然掉了前导零,所以它并不起作用。那么,从字节数组到保持前导零的十六进制字符串最简单的方法是什么?
回答:
一种简单的方法是检查输出的位数,Integer.toHexString()并在需要时在每个字节前添加一个前导零。像这样:
public static String toHexString(byte[] bytes) {    StringBuilder hexString = new StringBuilder();
    for (int i = 0; i < bytes.length; i++) {
        String hex = Integer.toHexString(0xFF & bytes[i]);
        if (hex.length() == 1) {
            hexString.append('0');
        }
        hexString.append(hex);
    }
    return hexString.toString();
}
以上是 在Java中,如何在保持前导零的同时将字节数组转换为十六进制数字的字符串? 的全部内容, 来源链接: utcz.com/qa/415761.html






