今天在《大型分布式网站架构设计与实践》(陈康贤著)一书中看到以下一段话,在此先 mark 一下:
“OutputStream 中直接写入一个 int 类型,会截取其低 8 位,丢弃其高 24 位,因此,需要将基本类型先转换为字节流。Java 采用的是 Big Endian 字节序。无独有偶,所有的网络协议也都是采用 Big Endian 字节序来进行传输的。因此,我们在进行数据的传输时,需要先将其转换成 Big Endian 字节序;同理,在数据接收时,也需要进行相应的转换”。
public static int bytes2Int(byte[] bytes) {
int num = bytes[3] & 0xFF;
num |= ((bytes[2] << 8) & 0xFF00);
num |=((bytes[1] << 16) & 0xFF0000);
num |=((bytes[0] << 24) & 0xFF000000);
return num;
}