将char保持十六进制(1byte)转换为2个char字符串

时间:2018-03-17 09:34:24

标签: c hex ascii posix converter

我正在处理一些图像识别程序。我将所有数据读入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并且不能使用我的函数。

1 个答案:

答案 0 :(得分:0)

sprintf()函数指定要输出两个字符的hexa值,并将输入buffer[4]强制转换为unsigned char:

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