1 主函数
public static void main(String[] args) {
int number = 10;
System.out.println(toInt(toBytes(number)));
}
2 int转化成byte
public static byte[] toBytes(int number){
byte[] bytes = new byte[4];
bytes[0] = (byte)number;
bytes[1] = (byte) (number >> 8);
bytes[2] = (byte) (number >> 16);
bytes[3] = (byte) (number >> 24);
return bytes;
}
3 byte转化成int
public static int toInt(byte[] bytes){
int number = 0;
for(int i = 0; i < 4 ; i++){
number += bytes[i] << i*8;
}
return number;
}
4 测试结果
5 过程分析
int占4个字节;byte占1个字节。int转化成byte的时候每次取低八位,用四个byte来存储一个int的值。byte转化成int的时候再按原来逆向移动相同的位数并叠加。
6 知识延伸
- 移位操作
https://blog.youkuaiyun.com/zhangyong01245/article/details/83715717 - 源码、反码、补码
正数:
反码是源码
补码是源码
负数:
反码是源码除符号位都取反
补码是反码加1 - 计算机为什么要用补码表示数值
https://blog.youkuaiyun.com/leonliu06/article/details/78685197