在允许我们通过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个字符串?
C#本身未定义字节序。但是,无论何时转换为字节,您都在做出选择。该BitConverter类有一个IsLittleEndian场告诉你这将如何表现,但它不给的选择。BinaryReader / BinaryWriter也是如此。
我的MiscUtil库有一个EndianBitConverter类,它允许您定义字节序;BinaryReader / Writer有类似的等效项。恐怕没有在线使用指南,但它们并不重要:)
(EndianBitConverter还具有普通BitConverter中不存在的功能,该功能可以在字节数组中就地进行转换。)