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

时间:2015-07-12 14:51:25

标签: c# memorystream binarywriter bytestream

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

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

C#客户端:

MemoryStream ms = new MemoryStream();
BinaryWriter writer = new BinaryWriter(ms);
writer.Write((ushort)0x01);
writer.Write("test");

客户输出:

[1, 0, 4, 116, 101, 115, 116]

服务器输出:

[0, 1, 0, 4, 116, 101, 115, 116]

对于客户端,前2个字节已被反转,并且我的服务器应用程序中的字符串编码为ushort一段时间,可以修改' BinaryWriter的行为还是我必须创建自己的实现?

编辑:服务器端数据包序列化程序:https://github.com/Adwelean/EmperadorServer/blob/master/source/vendor/cerealed/cerealiser.d

1 个答案:

答案 0 :(得分:3)

根据MSDN文档,BinaryWriter以小端格式存储UInt16。因此可以反转写入的字节顺序。

https://msdn.microsoft.com/en-us/library/8sh9zw1e(v=vs.110).aspx

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

BinaryWriter Endian issue