Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/37: Рейтинг темы: голосов - 37, средняя оценка - 4.97
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1

BitConverter little-endian -> big-endian

21.12.2010, 12:06. Показов 8037. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Копирую в массив byte[] некоторые значения

C#
1
2
3
4
5
6
7
8
byte[] msg = new byte[sizeof(int) * 6 + sizeof(double)];
Array.Copy(BitConverter.GetBytes(STX), 0, msg, 0, sizeof(int));
Array.Copy(BitConverter.GetBytes(Status), 0, msg, sizeof(int), sizeof(int));
Array.Copy(BitConverter.GetBytes(X), 0, msg, sizeof(int)*2, sizeof(int));
Array.Copy(BitConverter.GetBytes(Y), 0, msg, sizeof(int)*3, sizeof(int));
Array.Copy(BitConverter.GetBytes(Z), 0, msg, sizeof(int)*4, sizeof(int));
Array.Copy(BitConverter.GetBytes(Power), 0, msg, sizeof(int)*5, sizeof(double));
Array.Copy(BitConverter.GetBytes(ETX), 0, msg, sizeof(int)*5 + sizeof(double), sizeof(int));
массив получается little-endian (от младшего байта к старшему), что не есть кроссплатформенно, для передаче по сети.

Какими средствами можно скопировать в big-endian (от старшего к младшему)?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.12.2010, 12:06
Ответы с готовыми решениями:

Требуется совет по Little и Big-endian разной битности
допустим есть у меня байтовый массив следующего содержания: В Int32-little endian он будет выглядит как: - реверс всего...

Запись текста в файл в кодировке Unicode Little Endian
Хочу записать юникодовскую строку в файл лител ендингом. FileStream sr = new FileStream("D:\\new.txt", FileMode.Open,...

Порядок байт в big-endian и little-endian
Всем привет! Народ подскажите мне пожалуйста простые прописные истины, а то я что то запутался! Предположим что у нас в байте 8 - бит и...

6
 Аватар для Mikant
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
21.12.2010, 13:13
обрами каждый BitConverter.GetBytes() в Array.Reverse()

вот только, зачем это надо??
1
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
21.12.2010, 14:21  [ТС]
Цитата Сообщение от Mikant Посмотреть сообщение
вот только, зачем это надо??
выше писал:
Цитата Сообщение от oxotnik Посмотреть сообщение
что не есть кроссплатформенно, для передаче по сети.
Добавлено через 17 минут
Цитата Сообщение от Mikant Посмотреть сообщение
обрами каждый BitConverter.GetBytes() в Array.Reverse()
спасибо, получилось, но на мой взгляд это решение мягко сказать индусское.
Будет на другом типе процессора работать - получим на выходе полную ерунду. (или я ошибаюсь?)
0
 Аватар для Mikant
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
22.12.2010, 00:06
Цитата Сообщение от oxotnik Посмотреть сообщение
или я ошибаюсь?
ошибаешься
Цитата Сообщение от oxotnik Посмотреть сообщение
что не есть кроссплатформенно, для передачИ по сети.
ты лучше еще про middle-endian почитай и уверуй в его превосходство (реальное, imho). все нормальные протоколы и либы их поддерживающие и так "кроссплатформенны" (написаны по уму). просто не изобретай велосипед... не дураки же все вокруг

зы. ibm'овские std уже давно канули в Лету, не надо их искать, коли ты прогер, а не археолог
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
22.12.2010, 00:20  [ТС]
Цитата Сообщение от Mikant Посмотреть сообщение
все нормальные протоколы и либы их поддерживающие и так "кроссплатформенны" (написаны по уму). просто не изобретай велосипед... не дураки же все вокруг
Как бэ с чего все это началось: был написан в Qt сервер и клиент, которые обменивались данными через QDataStream, в нем по дефолту заложен прямой порядок следования данных, все работало. Одному человеку захотелось это переписать в шарпе (были на то причины), и работать перестало. Стали искать ошибку, пришли к выводу что она из за последовательности байт. Собственно ничего не мешает в клиенте поменять эту последовательность, но вопрос то остается открытым: как же так, в одной либе по дефолту один порядок, в другой другой порядок? Почему бы не согласовать на уровне библиотеки отправку в сеть в нормальной последовательности? (в дотнете я имею ввиду)

Цитата Сообщение от Mikant Посмотреть сообщение
ошибаешься
В каком тогда случае BitConverter.IsLittleEndian будет false ?
Указывает порядок байтов, в котором данные сохраняются в архитектуре данного компьютера.
0
 Аватар для Mikant
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
22.12.2010, 00:25
с конца: "сохраняются" (хранятся) - пишутся... но не передаюстя...
а "прямой порядок следования данных" звучит вообще дико. есть в OSI четкие спецификации, которые надо выдерживать везде. да и про ibm я не так просто заикнулся...
0
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
22.12.2010, 09:18  [ТС]
В общем вопрос плавно трансформировался в следующее:
Какие могут быть решения, кроме вышеозначенного? (в первом посте) И правильно ли оно вообще?

Добавлено через 2 минуты
Цитата Сообщение от Mikant Посмотреть сообщение
а "прямой порядок следования данных" звучит вообще дико.
ну давай к словам не придираться, в данном контексте понятно о чем речь идет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.12.2010, 09:18
Помогаю со студенческими работами здесь

Из little endian в big endian
Есть 256-битное 16-ричное число: 54 68 69 73 20 69 73 20 6D 65 73 73 61 67 65 2C 20 6C 65 6E 67 74 68 3D 33 32 20 62 79 74 65 73 Как...

Big-endian тестирование
Есть программа, которая должна работать на little и big endian одинаково. В ней куча всяких "ifdef". С помощью какого ПО для...

Как проще всего работать с Big-Endian C++ ?
С++. Как проще всего работать с Big-Endian, используя стандартные операции ?

Как считывать бинарные данные из файла с big-endian порядком?
Как считать данный из bin файла в котором данные(байты) записаны от старшего к младшему(т.е. в big-endian) сейчас я использую такой код...

Как объединить пару байт в слово? (Загрузка WAV, Big Endian)
Привет! Есть звуковой файл с 16-и битными амплитудами. Да не суть. После открытия файла и чтения всяких заголовков, остаются чистые RAW...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru