Update avaliable. Click RELOAD to update.
目录

关于java网络传输中Big Endian字节序


关于java网络传输中Big Endian字节序

说明

java里socket传输中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) & 0xF00);
    num |= ((bytes[1] << 16) & 0xF0000);
    num |= ((bytes[0] << 24) & 0xF000000);
    return num;
}

public static byte[] int2Bytes(int i) {
    byte[] result = new byte[4];
    result[0] = (byte) ((i >> 24) & 0xFF);
    result[1] = (byte) ((i >> 16) & 0xFF);
    result[2] = (byte) ((i >> 8) & 0xFF);
    result[3] = (byte) (i & 0xFF);
    return result;
}
版权所有,本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。转载请注明出处:https://www.wangjun.dev//2015/11/java-big-endian/

Related posts