Блог переехал. Актуальная версия поста находится по адресу: http://aakinshin.net/ru/blog/dotnet/endianness/.
Рассмотрим простую задачку: что выведет следующий код? [StructLayout(LayoutKind.Explicit)] struct UInt16Wrapper { [FieldOffset(0)] public UInt16 Value; [FieldOffset(0)] public Byte Byte1; [FieldOffset(1)] public Byte Byte2; } void Main() { var uint16 = new UInt16Wrapper(); uint16.Value = 1 + 2 * 256; Console.WriteLine(uint16.Byte1); Console.WriteLine(uint16.Byte2); } |
Полагаю, что внимательный читатель должен обратить внимание на название поста и дать правильный ответ: «зависит». Сегодня мы немного поговорим о том, как в .NET обстоят дела с порядком байтов.