不同的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;//算出變換後的值
}