在Java中,如何在保持前导零的同时将字节数组转换为十六进制数字字符串?我正在使用一些用于生成MD5散列的示例java代码。一个部分将结果从字节转换为十六进制数字的字符串:byte messageDigest[] = algorithm.digest(); StringBuffer hexString = new StringBuffer();for (int i=0;i<messageDigest.length;i++) {
hexString.append(Integer.toHexString(0xFF & messageDigest[i]));
}但是,由于toHexString显然掉下了前导零,所以它不太起作用。那么,从字节数组到保持前导零的十六进制字符串,最简单的方法是什么?
3 回答
慕的地10843
TA贡献1785条经验 获得超8个赞
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();}
凤凰求蛊
TA贡献1825条经验 获得超4个赞
char[]String
import org.apache.commons.codec.binary;Hex.encodeHexString(messageDigest);
ABOUTYOU
TA贡献1812条经验 获得超5个赞
public static String toHex(byte[] bytes) {
BigInteger bi = new BigInteger(1, bytes);
return String.format("%0" + (bytes.length << 1) + "X", bi);}"x"
添加回答
举报
0/150
提交
取消
