今天又温习了一下基础理论,10年前的东东。】
1、byte是一个字节8位 int是四个字节32位 即int是byte[4]。
2、int最大为2147483647,即byte[127][-1][-1][-1]
最小为[-128][0][0][0],-2147483648。
3、例子400转为byte[]
(1)400转为二进制[0000 0000] [0000 0000] [0000 0001] [1001 0000]
(2)单个字节作补码处理(反码+1)
-[1001 0000]+1 = [0110 1111]+1 = [0111 0000] = -112
(3)最后byte[] = {0,0,1,-112}
4、(byte)int强转,只取单个字节,
public static byte[] int2bytes(int mark){
byte[] b = new byte[4];
for (int i = 0; i < 4; i++){
b[i] = (byte) (mark >>> (24 - i * 8));
}
return b;
}
5、byte转int,反过来算
(1)byte[] = {0,0,1,-112}
(2)-112 = [0111 0000] = -[0111 0000]+1 = [1001 0000]
(3)最后二进制转10进制[0000 0000] [0000 0000] [0000 0001] [1001 0000]=1*256+144 = 400
public static int bytes2int(byte[] bytes) {
int addr = bytes[0] & 0xFF;
addr |= ((bytes[1] << 8) & 0xFF00);
addr |= ((bytes[2] << 16) & 0xFF0000);
addr |= ((bytes[3] << 24) & 0xFF000000);
return addr;
}