我们使用BinaryFormatter将对象序列化为NetworkStream并通过TCP套接字传输它们。
我只想弄清楚Endiannes是否已修复或是否依赖于系统。
我知道BinaryWriter总是使用LittleEndian,我试图为BinaryFormatter找到相同类型的信息。
答案 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