Детали о порядке байтов и .NET?

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

1) Порядок байтов решен .NET или аппаратными средствами?

2) Если решено аппаратными средствами, как я могу выяснить, какой порядок байтов аппаратные средства находятся в C#?

3) Порядок байтов влияет на двоичные взаимодействия, такие как ORs, ANDs, XORs или сдвиги? Т.Е. смещение будет однажды направо всегда откладывать младший значащий бит?

4) Я сомневаюсь относительно этого, но есть ли различие в порядке байтов от различных версий платформы .NET? Я предполагаю, что они являются всеми одинаковыми, но я учился прекращать принимать о некоторых более низких деталях уровня, таких как это.

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

26
задан Corey Ogburn 2 July 2010 в 02:43
поделиться

2 ответа

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

2) BitConverter.IsLittleEndian

3) Порядок байтов не влияет на побитовые операции. Сдвиг вправо - это сдвиг в направлении наименее значимого бита. ОБНОВЛЕНИЕ из комментария Упс: Однако порядок байтов влияет на двоичный ввод и вывод. При чтении или записи значений размером более одного байта (например, при чтении int из BinaryReader или при использовании BitConverter ) необходимо учитывать порядок байтов. После того, как значения считаны правильно, все побитовые операции работают как обычно.

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

31
ответ дан 28 November 2019 в 07:49
поделиться

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

0
ответ дан 28 November 2019 в 07:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: