使用.NET,一切都相当简单 - 包括ARM ASFAIK,在这里都是小端序。
我的问题是:在Mono和(可能的)大端序系统上会发生什么?在Int32 / Int64结构中,位是否会反转(与x86相比),或者框架是否强制使用小端序规则集?
谢谢
使用.NET,一切都相当简单 - 包括ARM ASFAIK,在这里都是小端序。
我的问题是:在Mono和(可能的)大端序系统上会发生什么?在Int32 / Int64结构中,位是否会反转(与x86相比),或者框架是否强制使用小端序规则集?
谢谢
当然,还有每个(运行时库)使用这些函数的函数。
通常,Microsoft 在他们的文档中不提及字节序 - 有一些奇怪的例外。例如,BinaryReader.ReadUInt16 被定义为读取小端字节序。其他方法没有提及。可以假设二进制序列化在大端机器上也是小端字节序。
请注意,XBox360 上的 XNA 是 大端字节序,因此这不仅仅是 Mono 的理论问题。
c#/.Net并不涉及字节序问题。int32/64是原子类型而非结构体。
BitConverter.IsLittleEndian
:if (BitConverter.IsLittleEndian)
{
// reverse bytes
}
BitConverter
、Buffer.BlockCopy
、不安全代码等。 - CodesInChaos