最近有点犯晕,一个白痴问题转不过来,望大家指点。有一段内存码:
0000: 8C80 9830 3132 3334 3536 3738 3900 8D90
现在要把它通过网络发出去,那肯定要转换成byte[]了,如何转换?不是直接byte b = (byte)0x8C吧?我记得byte的值是-128~127
0000: 8C80 9830 3132 3334 3536 3738 3900 8D90
现在要把它通过网络发出去,那肯定要转换成byte[]了,如何转换?不是直接byte b = (byte)0x8C吧?我记得byte的值是-128~127
这内存值是16进制的
你这中间要有空格的话自己处理下哈 //16进制字符串转字节数组
public byte[] hexStringToByte(String hex) {
int len = (hex.length() / 2);
byte[] result = new byte[len];
char[] achar = hex.toCharArray();
for (int i = 0; i < len; i++) {
int pos = i * 2;
result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));
}
return result;
}
//字符转字节
private byte toByte(char c) {
byte b = (byte) "0123456789ABCDEF".indexOf(c);
return b;
}
int i = 0x8C; //十进制应该是140
byte b = (byte)i; //也就是-116
i = b;
我知道这是由于byte是范围是-128~127的缘故,所以b的值为-116,但这样会不会有问题?因为i = b后,i的值就会是-116了。