繁体   English   中英

将字节*转换为十六进制字符串

[英]Convert byte* to HEX String

我正在尝试将uint8_t缓冲区转换为十六进制字符串:

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;
}

没有注释行,我可以在输出中看到十六进制值一次为1。

我想对注释后的代码执行的操作是将整个HEX值作为char* 我尝试了注释的代码,但出现了一些内存错误。

注释的代码几乎是正确的。

您只忘记了一件事:C字符串以零结尾,而您忘记了终止字符串。

要么

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);
}

瓦尔特

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM