Обеспечение Endian-независимой копии примитивов - PullRequest
0 голосов
/ 22 сентября 2018
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 голосов
/ 22 сентября 2018

Единственное, что вы действительно можете сделать, это посмотреть на BitConverter.IsLittleEndian

Указывает порядок байтов («порядковый номер»), в котором данные хранятся в этой компьютерной архитектуре.

И перейдите в желаемое состояние порядка байтов к вашей функции, которая знает, где на каком компьютере заканчивается ваш m_buffer.

Если требуемое состояние и ваша текущая архитектура отличают васпридется переключаться

...