У меня возникла небольшая проблема при отправке данных через устройство LoRa A. Я отправляю шестнадцатеричную строку, которая определяется либо как строка, либо как строка символов (я отправляю только одну из них, но пока с тем же результатом)
String packet = "025555AD4148E1BE4100A06E421954C5BB";
//char data[] = "025555AD4148E1BE4100A06E421954C5BB";
Тем не менее, когда я получаю его на бэкэнде, строка выглядит так в base64.
msg.payload = MDJhYmFhNmE0MTUyYjhjNDQxMDBjNDgwNDIwMDAwMDcwOQ==
это на самом деле отличается от строки base64, полученной на другом устройстве (LoRa B), хотя отправленная полезная нагрузка была той же самой, это второе устройство (устройство LoRa B) получает это msg.payload = AquqakFSuMRBAMSAQgAABwk=
Если бы я декодировал LoRA и LoRa B base64 в nodejs с той же функцией
var b = new Buffer(msg.payload,'base64')
Я получаю следующую группу символов, которые не являются моей шестнадцатеричной строкой
30326162616136613431353262386334343130306334383034323030303030373039
‹= Лора А 02ABAA6A4152B8C44100C4804200000709
‹= Лора Б
Итак, я думаю, что здесь происходит то, что исходная шестнадцатеричная строка разбивается на символы и отправляется через Лору. Таким образом, я получаю представление ascii шестнадцатеричного числа, я прав?
Следующий вопрос: как я могу получить исходную шестнадцатеричную строку?
заранее спасибо
С Уважением!
РЕДАКТИРОВАТЬ:
Как я предполагал, проблема, по-видимому, заключается в том, как обрабатывается полезная нагрузка перед отправкой, а не в кодировании/декодировании base64.
payload = 'MDJhYmFhNmE0MTUyYjhjNDQxMDBjNDgwNDIwMDAwMDcwOQ==';
b = new Buffer(payload,'base64')
console.log("Buffer b raw ");
console.log(b);
console.log("Buffer b stringfied ");
console.log(b.toString());
Возвращает
Buffer b raw
<Buffer 30 32 61 62 61 61 36 61 34 31 35 32 62 38 63 34 34 31 30 30 63 34 38 30 34 32 30 30 30 30 30 37 30 39>
Buffer b stringfied
02abaa6a4152b8c44100c4804200000709
Изучаем функцию macTransmit
в коде, используемом для передачи в устройстве видно, что они преобразуют packet
в символы HEX
for (int i = 0; i < size; ++i) {
this->loraStream->print(static_cast<char>(NIBBLE_TO_HEX_CHAR(HIGH_NIBBLE(payload[i]))));
this->loraStream->print(static_cast<char>(NIBBLE_TO_HEX_CHAR(LOW_NIBBLE(payload[i]))));}
025555AD4148E1BE4100A06E421954C5BB
в base64? - person zerkms   schedule 26.10.2016