Почему идентификатор кадра CAN-шины переворачивается при чтении из сокета?C++

Программы на C++. Форум разработчиков
Anonymous
Почему идентификатор кадра CAN-шины переворачивается при чтении из сокета?

Сообщение Anonymous »

У меня есть Raspberry Pi, считывающий данные CAN с автомобиля. Если я использую программу candump, входящую в состав can-utils, я получаю кучу данных. Пример выглядит так:

Код: Выделить всё

can0 1C4 [8]  03 F3 26 08 00 00 7F 70
Затем я написал простое приложение на C++, открывающее сокет шины can0 и считывающее некоторые данные в символьный буфер. Если я перебираю каждый символ буфера после чтения и преобразую каждый символ в целое число в шестнадцатеричном формате (и помещаю канал между каждым символом), я получаю следующее:

Код: Выделить всё

c4|1|0|0|8|0|0|0|3|f3|26|8|0|0|7f|70|
Почему байт идентификатора переворачивается, когда я читаю данные с помощью сокета и буфера символов? Такое поведение совместимо со всеми CAN ID. Код длины данных и данные указаны в правильном формате/порядке, но идентификатор наоборот.


Подробнее здесь: https://stackoverflow.com/questions/464 ... m-a-socket

Вернуться в «C++»