BinaryFormatter Endiannes

时间:2015-10-06 09:16:29

标签: c# endianness binaryformatter

我们使用BinaryFormatter将对象序列化为NetworkStream并通过TCP套接字传输它们。

我只想弄清楚Endiannes是否已修复或是否依赖于系统。

我知道BinaryWriter总是使用LittleEndian,我试图为BinaryFormatter找到相同类型的信息。

2 个答案:

答案 0 :(得分:1)

BinaryFormatter使用内部__BinaryParser类来处理字节解码。将其ReadInt16() method视为具有endian依赖关系的{{3}}。点击" dataReader"看到它只是一个完成工作的BinaryReader。

无论系统默认如何,

BinaryReader始终使用little-endian。

_BinaryWriter.WriteInt16()的相同故事,BinaryFormatter用于编写Int16的内部方法,使用BinaryWriter。请注意,您永远不会对此进行实际测试,唯一能够执行C#代码的非平凡大端主机是旧版XBox 360.它不支持System.Net

答案 1 :(得分:0)

如果您正在使用两个应用程序,请使用BinaryReader/BinaryWriter,而不是BinaryFormatter. BinaryFormatter不适合通过线路序列化数据,它主要是为IPC设计的。如果你将数据传递到另一个系统,这不是一个好主意。 在这里阅读https://msdn.microsoft.com/en-us/library/system.runtime.serialization.formatters.binary.binaryformatter(v=vs.110).aspx。 同样在这里:http://ambracode.com/index/show/244765