private String bytesToHexString(byte[] bytes) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < bytes.length; i++) {
System.out.println("bytes[i} "+bytes[i]);
String hex = Integer.toHexString(0xFF & bytes[i]);
//为什么length()为1要加0
if (hex.length() == 1) {
sb.append('0');
}
sb.append(hex);
}
byte转换成十六进制数,如果<16,那么是一个字符,如果在16~255之间,是2个字符,通常我们希望用2个字符表示一个字节,前面不足的补0。
这样比较容易理解。
否则遇到字符串11,这到底是1个字节,值是17,还是2个字节,分别是1和1,就混淆了。因此,对于2个字节,分别是1和1,我们就写成0101,遇到11,那一定是17.
byte转换成十六进制数,如果<16,那么是一个字符,如果在16~255之间,是2个字符,通常我们希望用2个字符表示一个字节,前面不足的补0。
就是