将 char holding hex(1byte) 转换为 2 char string

Converting char holding hex(1byte) to 2 char string

我正在处理一些图像识别程序。我将所有数据读取到 char 缓冲区。该图像包含十六进制数据,因此我逐字节读取到缓冲区,稍后再处理它们。

我的问题是:如何从包含读取的十六进制数据的 char(1 字节)转换和获取数据并使其成为 2 个大小的 char 数组?

示例:8c -> 读入字符包含-116。我似乎找不到任何方法让它变成 char array[0] ='8'array[1]='c'

 if(buffer[4] < 10 && buffer[4] >= 0) {
            buyut1[0] = '0';
            buyut1[1] = buffer[4];
            sprintf(offSet, "%s", buyut1);
        }
        else{
            sprintf(offSet, "%x", buffer[4]);
        }
        if(buffer[5] < 10 && buffer[5] >= 0) {
            buyut2[0] = '0';
            buyut2[1] = buffer[5];
            sprintf(offSet,"%s""%c""%x",offSet,'0',buffer[5]);

        }
        else{
            sprintf(offSet,"%s%x",offSet,buffer[5]);
        }

我可以转换类似于 6c 的东西,它包含我认为的带符号形式的正数。或者像 03 这样以 0 开头的东西。

但是 8c,例如,有 -116 并且不适用于我的函数。

指定要输出两个字符的十六进制值的 sprintf() 函数,并将输入 buffer[4] 转换为无符号字符:

sprintf( offSet, "%02x", (unsigned char)buffer[4]);