![]() |
![]() |
#1 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Подскажите может кто в курсе, есть ли в openwrt стандартная функция или где то в конфигах нужно поправить?
Мне требуется что бы роутер изменил представление о хранении данных в памяти с “Big-endian” на представление о общепринятом виде “Little-endian” |
![]() |
![]() |
![]() |
#2 |
Junior Member
Регистрация: 09.01.2014
Сообщений: 5
Вес репутации: 0 ![]() |
![]()
Порядок байт, исключительно зависит от архитектуры процессора, и нет никаких конфигов. Для конвертирования порядка байт в памяти существуют несколько С функций, 16 битные: htons, ntohs и 32 битные: htonl, ntohl. Более подробно тут http://www.gnu.org/software/libc/man...yte-Order.html
|
![]() |
![]() |
![]() |
#3 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Спасибо!
Мне пришлось написать свой конвертер |
![]() |
![]() |
![]() |
#4 |
Senior Member
Регистрация: 21.09.2013
Сообщений: 109
Вес репутации: 0 ![]() |
![]()
TP-link 3020 на mips контроллере собран, в нем возможно переключать порядок байт. На практике никогда этим не занимался, глюков при переключении может быть вагон. Лучше хранить данные в контейнерах не зависящих от порядка байт.
И ни в коем случае не использовать битовые поля, особенно размерностью по 5-7 бит, особенно на мипсе, особенно для передачи по уарту, особенно на машину с другим порядком байт. Шутка ![]() |
![]() |
![]() |
![]() |
#5 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Если читать потоковые данные(звук, видео), то конвертер уже не стоит использовать
Так что вопрос открыт. |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Регистрация: 17.02.2013
Адрес: Харьков
Сообщений: 235
Вес репутации: 690 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Admin
Цитата:
При этом читает, отображает, воспроизводит нормально, уже в Little-endian? |
|
![]() |
![]() |
![]() |
#7 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Я на потоке еще не проверял
Проверял только на заполнении массива из переменных В итоге получил фаил с неправильными данными Но что будет если я буду читать поток в переменную типа unsigned short, сохраняю в массив, а массив сохраню в фаил ? |
![]() |
![]() |
![]() |
#8 |
Senior Member
Регистрация: 21.09.2013
Сообщений: 109
Вес репутации: 0 ![]() |
![]()
Данные от драйвера в void и с помощью memcpy в файл или в память. Если в риалтайме не успевает выполниться, то конвертация и любая другая обработка выполняется после получения всех данных.
unsigned short - 2 байта, будет херня. |
![]() |
![]() |
![]() |
#9 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Сначала в массив, потом в фаил или stdout
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Регистрация: 21.09.2013
Сообщений: 109
Вес репутации: 0 ![]() |
![]()
Звук и видео в консоль?
Что надо сделать, какая задача? Обрабатывать данные на роутере? Тогда порядок байтов не важен. Драйвер сам все отдаст в том порядке который нужен роутеру (при условии что драйвер существует и установлен). Если эти данные потом надо передать на ПК с другим порядком байт, то конвертация неизбежна. ЕЕ можно выполнить как на стороне роутера непосредственно перед передачей, так и на стороне ПК после приема. Запись данных куда бы то ни было кусками по 2 байта конвертацией не является. |
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|