确保基元的字节序独立复制

时间:2018-09-22 03:13:50

标签: c# pointers endianness

public unsafe void WriteInt64(long value) //C# Code
    {
        fixed (byte* ptr = m_buffer)
        {
            *(long*)(ptr)   = value;
        }
    }

在上面的代码中,该值被直接分配给指针。我想知道这段代码是否可以实现与字节序无关的代码,否则,它的正确性如何?

另一种表达方式是 在这里-https://stackoverflow.com/a/24620105/413306,memcpy方法中的指针复制如何实现与字节序无关的代码?

1 个答案:

答案 0 :(得分:1)

您唯一能做的就是看BitConverter.IsLittleEndian

  

表示存储数据的字节顺序(“字节序”)   这种计算机体系结构。

然后将所需的字节序状态传递给您的函数,函数知道您的m_buffer最终在哪台计算机上。

如果所需的状态和您当前的体系结构不同,则必须进行切换