C # не определяет порядок байтов. В действительности, да, он, вероятно, всегда будет с прямым порядком байтов (IIRC даже на IA64, но я не проверял), но в идеале вы должны проверить BitConverter.IsLittleEndian
, если важен порядок байтов - или просто использовать сдвиг битов и т. Д., А не прямую память доступ.
Чтобы процитировать несколько строк из protobuf-net (сборка еще не совершена):
WriteInt64(*(long*)&value);
if (!BitConverter.IsLittleEndian)
{ // not fully tested, but this *should* work
Reverse(ioBuffer, ioIndex - 8, 8);
}
т.е. он проверяет порядок байтов и при необходимости переворачивает.