Я пытаюсь преобразовать uint8_t
буфер в HEX строку:Преобразовать байты * в шестнадцатеричной строку
uint16_t len = b.length();
char* result = (char*) malloc(len * 2 * sizeof(char));
int resPos=0;
while (len > 0) {
uint8_t *buffer;
uint8_t bytesToRead = min(32, len);
buffer = b.readBuffer(bytesToRead);
for (int i = 0; i < bytesToRead; i++) {
char buf[3];
sprintf(buf, "%02X", buffer[i]);
OutPut.println(buf);
//memcpy(result + resPos , buf,2);
//resPos+=2;
//OutPut.println(resPos);
}
len -= bytesToRead;
}
Без комментировал линий, я могу увидеть в моем выходе, шестигранные значения по одному.
Что я хотел бы сделать, в прокомментированном коде возвращается целое значение HEX как char*
. Я попробовал прокомментированный код, и у меня есть некоторые ошибки памяти.
где? 'result [resPos + 2] = 0' перед println? –
ehm .. 1) да. после приращения вам даже не понадобится '+ 2'. 2) предпочтительно, если вы не хотите печатать в цикле, то только после цикла. 3) вы могли бы непосредственно sprintf в 'result'. –
Да, печать была предназначена только для отладки. Он будет полностью удален. Я думаю, что проблема - это что-то еще, потому что, как только я memcopy, он продолжает перезагрузку (я программирую микроконтроллер). –