网络字节序and主机字节序

不同的CPU对整数的存储有着不同的方式,也就是指直接序,

 little-endian地址低位存储整数的低位 ,地址高位存整数的高位    如:无符号16位整数 5用二进制表示为:0000 0000 0000 0101

big-endian    地址低位存储整数的高位 ,地址高位存整数的低位    如:无符号16位整数 5用二进制表示为:0000 0101 0000 0000

在网络传输过程中,如果机器间的字节序不同就会导致数据传输错误那么就要转换下字节序

下面给个简单的方法

public override void Write(ulong value)
        {
            uint height = (uint)((value & 0XFFFFFFFF00000000) >> 32);//取出高16位
            uint low = (uint)(value & (ulong)0X00000000FFFFFFFF);//取出低16位
            Write(low);//先写入低16位
            Write(height);//再写入高16位
        }

 public override long ReadInt64()
        {
            long height = (long)ReadInt32();//先读取高16位
            long low = (long)ReadInt32();//再读取低16位
            low = low << 32;//低16位放到高位
            return height | low;//算出变换后的值
        }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值