在C#中序列化在C#中进行反序列化BitConverter和字节序保证

时间:2019-06-27 11:21:28

标签: c#

可以安全地假设仅将int硬编码为BitConverter.IsLittleEndian

,仅在C#中序列化并且仅在C#中反序列化的true不会受到体系结构字节序的影响。

1 个答案:

答案 0 :(得分:3)

不。可以将C#编译为在dotnetcore下运行。在这里,您将IsLittleEndian硬编码为true的假设是不正确的。在编译时将其硬编码为,但这可能是truefalse,具体取决于编译目标。

请参见https://github.com/dotnet/corefx/blob/master/src/Common/src/CoreLib/System/BitConverter.cs#L21

#if BIGENDIAN
        [Intrinsic]
        public static readonly bool IsLittleEndian /* = false */;
#else
        [Intrinsic]
        public static readonly bool IsLittleEndian = true;
#endif

显然,虽然.NET / dotnet核心没有,但是Mono可以针对某些大端架构。