Почему `OpCode.Value `имеет «неправильный» порядок следования байтов?

Факты:

  1. Правильная кодировка инструкции CILrethrowкод операции -представляет собой последовательность из двух -байтов FE 1A.

  2. OpCodes.Rethrow.Value(который имеет типshort)имеет значение 0xFE1Aна моей маленькой -машине с порядком байтов.

  3. BitConverterучитывает порядок следования байтов машины при преобразовании в/из последовательностей байтов.

  4. На моей маленькой -машине с порядком байтов BitConverter.GetBytes(OpCodes.Rethrow.Value)приводит к последовательности байтов 1A FE.

Это означает, что сериализация OpCode.Valueна машине с маленьким -порядком байтов с использованием BitConverterне дает правильного кодирования кода операции -; порядок байтов обратный.

Вопросы:

  • Является ли порядок байтовOpCode.Valueзадокументировано (и если да, то где? ), или это "деталь реализации"?

  • Приводит ли шаг 4 выше на большой машине -endian к неправильному порядку байтов? То есть будет ли OpCodes.Rethrow.Valueравно 0x1AFEна большой машине -с порядком байтов?

7
задан stakx supports GoFundMonica 18 August 2012 в 07:47
поделиться