本问题已经有最佳答案,请猛点这里访问。
我正在尝试将字节[]转换为十六进制字符串,在Android中将相同的十六进制字符串转换为字节[],数据不匹配。
前任:
接收字节[]数据:[B@B39C86A
转换的十六进制字符串:8be897cc3c4d9e5d6a6bbd106d8e8d487691b56
当我解码十六进制字符串时,我得到了[b@ea6d15b,但它应该是[b@b39c86a
我正在使用下面的代码进行转换。
public String byte2hex(byte[] a) {
/*StringBuilder sb = new StringBuilder(a.length * 2);
for (byte b : a)
sb.append(String.format("%02x", b & 0xff));
return sb.toString();*/
String hexString ="";
for(int i = 0; i < a.length; i++){
String thisByte ="".format("%x", a[i]);
hexString += thisByte;
}
return hexString;
}
public static byte[] hexStringToByteArray(String s) {
/* int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i + 1), 16));
}
return data;*/
byte[] bytes = new byte[s.length() / 2];
for(int i = 0; i < s.length(); i += 2){
String sub