C#二进制写入程序ushort字节顺序

C#二进制写入程序ushort字节顺序,c#,memorystream,binarywriter,bytestream,C#,Memorystream,Binarywriter,Bytestream,我有一个服务器端应用程序是用D写的,我的客户端应用程序是用C写的。我使用BinaryWriter在它们之间进行通信,但字节顺序有问题 实际上字节的顺序不一样,例如: 客户: 客户端输出: [1, 0, 4, 116, 101, 115, 116] 服务器输出: [0, 1, 0, 4, 116, 101, 115, 116] 对于客户端,前2个字节已反转,并且我的服务器应用程序中的字符串使用ushort编码长度,可以“修改”BinaryWriter的行为,或者我必须创建自己的实现吗 编辑:服

我有一个服务器端应用程序是用D写的,我的客户端应用程序是用C写的。我使用BinaryWriter在它们之间进行通信,但字节顺序有问题

实际上字节的顺序不一样,例如:

客户:

客户端输出:

[1, 0, 4, 116, 101, 115, 116]
服务器输出:

[0, 1, 0, 4, 116, 101, 115, 116]
对于客户端,前2个字节已反转,并且我的服务器应用程序中的字符串使用
ushort
编码长度,可以“修改”BinaryWriter的行为,或者我必须创建自己的实现吗


编辑:服务器端数据包序列化程序:

根据MSDN文档,BinaryWriter以little-endian格式存储UInt16。因此,有可能有一个反向的写入字节顺序

我想你可以参考这篇文章,了解作者如何使用big-endian


根据MSDN文档,BinaryWriter以little-endian格式存储UInt16。因此,有可能有一个反向的写入字节顺序

我想你可以参考这篇文章,了解作者如何使用big-endian


根据MSDN文档,BinaryWriter以little-endian格式存储UInt16。因此,有可能有一个反向的写入字节顺序

我想你可以参考这篇文章,了解作者如何使用big-endian


根据MSDN文档,BinaryWriter以little-endian格式存储UInt16。因此,有可能有一个反向的写入字节顺序

我想你可以参考这篇文章,了解作者如何使用big-endian



它不是倒置的。首先添加一个0如果我在服务器上写一个ushort,字节数组是[0,1],而在客户端,字节数组是[1,0],我认为服务器使用大端顺序,客户端使用小端顺序…@Adwelean在那个例子中,同样有一个0前缀。如果看不到服务器代码,就没有什么可以帮助您的了。您似乎意识到这可能是一个持久性问题。结束。我也这么认为,但为什么字符串没有恢复^^它不是倒置的。首先添加一个0如果我在服务器上写一个ushort,字节数组是[0,1],而在客户端,字节数组是[1,0],我认为服务器使用大端顺序,客户端使用小端顺序…@Adwelean在那个例子中,同样有一个0前缀。如果看不到服务器代码,就没有什么可以帮助您的了。您似乎意识到这可能是一个持久性问题。结束。我也这么认为,但为什么字符串没有恢复^^它不是倒置的。首先添加一个0如果我在服务器上写一个ushort,字节数组是[0,1],而在客户端,字节数组是[1,0],我认为服务器使用大端顺序,客户端使用小端顺序…@Adwelean在那个例子中,同样有一个0前缀。如果看不到服务器代码,就没有什么可以帮助您的了。您似乎意识到这可能是一个持久性问题。结束。我也这么认为,但为什么字符串没有恢复^^它不是倒置的。首先添加一个0如果我在服务器上写一个ushort,字节数组是[0,1],而在客户端,字节数组是[1,0],我认为服务器使用大端顺序,客户端使用小端顺序…@Adwelean在那个例子中,同样有一个0前缀。如果看不到服务器代码,就没有什么可以帮助您的了。您似乎意识到这可能是一个持久性问题。结束。我也这么认为,但为什么字符串没有恢复^^
[0, 1, 0, 4, 116, 101, 115, 116]