public static String bytesToHexFun1(byte[] bytes) { // 一个byte为8位,可用两个十六进制位标识 char[] buf = new char[bytes.length * 2]; int a = 0; int index = 0; for(byte b : bytes) { // 使用除与取余进行转换 if(b < 0) { a = 256 + b; } else { a = b; } buf[index++] = HEX_CHAR[a / 16]; buf[index++] = HEX_CHAR[a % 16]; } return new String(buf); }
上面是将byte转换为16进制,那么为什么a=256+b?
答案是因为一个char就是一个字节,一个字节有256种,因为数组的次序不能是负的,所以加上256后还是等于自身