将byte *转换为HEX String

时间:2014-01-24 20:23:36

标签: c

我正在尝试将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*返回。我尝试了注释代码,我有一些内存错误。

2 个答案:

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

瓦尔特