Мне нужно отправить значение 115200
в качестве параметра через последовательную связь на внешнее устройство, которое требует параметра как часть массива байтов в формате: 0x00, 0x00, 0x00, 0x00
, и я понятия не имею как преобразовать его в этот формат. Я делаю это в обработке, поэтому решение Processing/java было бы удобно для будущего, но ATM. Я очень доволен, если могу просто отправить сообщение с этой конкретной переменной.Как преобразовать большое целое число в байты
Здесь байтовый массив:
byte[] tx_cmd = { 0x55, -86, // packet header (-86 == 0xAA)
0x01, 0x00, // device ID
0x00, 0x00, 0x00, 0x00, // input parameter NEEDS TO BE 115200
0x04, 0x00, // command code
0x00, 0x01 }; // checksum
Параметр должен быть помещен в 5-го по 8-й позиции (байт [4] - байт [7]).
формат сообщения мало порядок байт это структура сообщения:
0 0x55 BYTE старт команды code1
1 0xAA BYTE команда пуска Кодекса2
2 Device ID WORD Device ID: по умолчанию 0x0001 , всегда фиксирована
4 параметр параметр DWORD ввода
8 Команда WORD код команды
10 Контрольная сумма WORD Контрольная сумма (байт) сложение OFFSET [0] + ... + OFFSET [9] = Контрольная сумма
Любые советы будут оценены. Благодаря
ваш вопрос, как преобразовать 'int' к SizeOf (INT) размерный массив байтов? или это значение [115200] (https://www.google.ch/search?q=115200+to+hex) точно? – BeyelerStudios
Возможный дубликат [Преобразование int в 4-байтовый массив символов (C)] (http://stackoverflow.com/questions/3784263/converting-an-int-into-a-4-byte-char-array-c) –
Четко обозначить ожидаемый endian - делает ли наименьший или самый значительный байт из 115200 в байт [4]? (Сообщение выглядит немного endian). Вы знаете, как вычислить контрольную сумму?если нет, какой алгоритм используется и как он применяется здесь? Возможно, этот протокол/формат имеет имя? – chux