Блог переехал. Актуальная версия поста находится по адресу: 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 обстоят дела с порядком байтов.

