我们使用BinaryFormatter将对象序列化到NetworkStream并通过TCP套接字传输它们。BinaryFormatter Endiannes
我只是想弄清楚Endiannes是固定的还是依赖于系统。
我知道BinaryWriter总是使用LittleEndian,我试图为BinaryFormatter找到相同类型的信息。
我们使用BinaryFormatter将对象序列化到NetworkStream并通过TCP套接字传输它们。BinaryFormatter Endiannes
我只是想弄清楚Endiannes是固定的还是依赖于系统。
我知道BinaryWriter总是使用LittleEndian,我试图为BinaryFormatter找到相同类型的信息。
如果您正在使用两个应用程序,请使用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
BinaryFormatter使用内部__BinaryParser类负责解码字节。看看它的ReadInt16() method是否具有endian依赖性。点击“dataReader”可以看到它只是一个BinaryReader,可以完成这项工作。
无论系统默认情况如何,BinaryReader总是使用little-endian。
__BinaryWriter.WriteInt16()是BinaryFormatter用于编写Int16的内部方法,它使用BinaryWriter。请注意,你永远不会真的测试这个,唯一可以执行C#代码的不重要的big-endian主机是旧有的XBox 360.它不支持System.Net