Подтвердить что ты не робот

Подробная информация о Endian-ness и .Net?

У меня есть несколько вопросов о endian-ness, которые достаточно связаны, и я гарантирую поставить их в один вопрос:

1) Является ли endian-ness решением .Net или аппаратным обеспечением?

2) Если это решило аппаратное обеспечение, как я могу определить, какой endian находится на С#?

3) Влияет ли сущность на двоичные взаимодействия, такие как OR, AND, XOR или сдвиги? И.Е. Перемещая один раз вправо, всегда сдвигайте младший значащий бит?

4) Я сомневаюсь в этом, но есть ли разница в endian-ness из разных версий .Net framework? Я предполагаю, что они все одинаковые, но я научился перестать предполагать некоторые детали более низкого уровня, такие как это.

Если понадобится, я могу задать их как разные вопросы, но я считаю, что любой, кто знает ответ на один из них, вероятно, знает ответ на все (или может указать мне в хорошем направлении).

4b9b3361

Ответ 1

1) Аппаратное обеспечение.

2) BitConverter.IsLittleEndian

3) Endianness не влияет на побитовые операции. Сдвиг вправо смещается в направлении наименьших значащих бит. Комментарий UPDATE от Oops: Тем не менее, endianness влияет на двоичный вход и выход. При чтении или записи значений, превышающих байт (например, чтение int из BinaryReader или с помощью BitConverter), вам нужно учитывать утверждение. После правильного считывания значений все побитовые операции действуют как нормальные.

4) Большинство версий .NET мало ориентированы. Известные исключения включают XBox и некоторые платформы, поддерживаемые Mono или Compact Framework.

Ответ 2

1), ни... или вы не можете сказать, что это решало разработчики аппаратного обеспечения. И вы должны решить это, если вы пишете программное обеспечение, которое читает/записывает определенные форматы файлов без использования внешних библиотек.
Нет проблем с endiannes Если вы читаете из файла
* байт
но вы должны решить, как его интерпретировать в маленьком или большом формате если вы прочтете все другие примитивные типы данных, например, * целые числа,
* строки,
* плавает.
Аппаратное обеспечение здесь не помогает. Битконвер не помогает здесь. Только документация формата файла может помочь и проверить ваш код курса...
редактировать: найдено объявление хорошее объяснение здесь: http://betterexplained.com/articles/understanding-big-and-little-endian-byte-order/