關於大端和小端,是一個有趣的問題。本文告訴大家如何在C#轉換大端和小端。
這里有一個有趣的故事,請看詳解大端模式和小端模式 - CSDN博客
默認的 C# 使用的是小端,如果收到的消息是大端,那么就會出現解析錯誤。
例如收到的數據是 byte 數組,現在知道數據是大端數據,需要把大端轉小端,首先需要把數據復制出來。
復制數組
假設收到的數據是 data ,里面的前兩個 byte 是不需要的,格式是
也就是需要復制出第2個到第5個byte出來,轉換這個數據反序。
復制數組的方式有很多個,例如 Array.Copy 和 Buffer.BlockCopy 兩個函數使用方式差不多
下面我使用 Array.Copy 做例子
首先定義一個數組用來反序
var revertByteList = new byte[4];
然后復制數據
Array.Copy(data, 2, revertByteList, 0, 4);
對數據反序,這樣就轉換大端
revertByteList = revertByteList.Reverse().ToArray();
數組轉整數
從數組轉整數的方式很簡單,使用下面代碼就可以轉換
var n = BitConverter.ToInt32(revertByteList, 0);
小端轉大端就是先把 int 轉 byte ,然后按照每 4 個 byte 反序就可以
我搭建了自己的博客 https://blog.lindexi.com/ 歡迎大家訪問,里面有很多新的博客。只有在我看到博客寫成熟之后才會放在csdn或博客園,但是一旦發布了就不再更新
如果在博客看到有任何不懂的,歡迎交流,我搭建了 dotnet 職業技術學院 歡迎大家加入
交流,我搭建了 dotnet 職業技術學院 歡迎大家加入
本作品采用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。歡迎轉載、使用、重新發布,但務必保留文章署名林德熙(包含鏈接:http://blog.csdn.net/lindexi_gd ),不得用於商業目的,基於本文修改后的作品務必以相同的許可發布。如有任何疑問,請與我聯系。