我正在尝试将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*
返回。我尝试了注释代码,我有一些内存错误。
答案 0 :(得分:1)
评论的代码几乎是正确的。
你忘记了一件事:C字符串零终止,你忘了终止你的字符串。
答案 1 :(得分:1)
或
char buf[3];
result[0] = '0'; result[1] = 'x'; result[2] = 0;
or
memcpy(result, "0x");
for(i = 0; i < len; i++){
itoa(buffer[i], buf, 16);
strcat(result, buf);
}
瓦尔特