如何将 uint8_t 数组转换为字符串?

How to convert a uint8_t array into a string?

我有一个函数可以将十六进制字符串(例如“02AFA1253...ecc.”)转换为 uint8_t 数组。我需要做相反的事情,即将 uint8_t 数组转换为十六进制字符串。怎么做?这是将十六进制字符串转换为uint8_t数组的函数代码:谢谢大家的帮助!

size_t convert_hex(uint8_t *dest, size_t count, const char *src) {
    size_t i = 0;
    int value;
    for (i = 0; i < count && sscanf(src + i * 2, "%2x", &value) == 1; i++) {
        dest[i] = value;
    }
    return i;
    }   

反其道而行之

size_t convert_hex_inv(char *dest, size_t count, const uint8_t *src) {
    size_t i = 0;
    for (i = 0; i < count && sprintf(dest + i * 2, "%02X", src[i]) == 2; i++);
    return i;
}

请注意,dest 指向的缓冲区必须至少包含 count * 2 + 1 个元素。不要忘记用于终止空字符的 +1