一尘不染

C#小尾数法还是大尾数法?

c#

在允许我们通过UDP / IP控制它的硬件文档中,我发现了以下片段:

在此通信协议中,DWORD是4字节数据,WORD是2字节数据,BYTE是单字节数据。存储格式为小字节序,即4字节(32bits)的数据存储为:d7-d0,d15-d8,d23-d16,d31-d24;双字节(16位)数据存储为:d7-d0,d15-d8。

我想知道这如何转换为C#?发送之前,我是否必须转换内容?例如,如果要发送32位整数或4个字符串?


阅读 270

收藏
2020-05-19

共1个答案

一尘不染

C#本身未定义字节序。但是,无论何时转换为字节,您都在做出选择。该BitConverter类有一个IsLittleEndian场告诉你这将如何表现,但它不给的选择。BinaryReader
/ BinaryWriter也是如此。

我的MiscUtil库有一个EndianBitConverter类,它允许您定义字节序;BinaryReader
/ Writer有类似的等效项。恐怕没有在线使用指南,但它们并不重要:)

(EndianBitConverter还具有普通BitConverter中不存在的功能,该功能可以在字节数组中就地进行转换。)

2020-05-19