This question already has answers here:
Convert two ASCII Hexadecimal Characters (Two ASCII bytes) in one byte
                                
                                    (5个答案)
                                
                        
                                3年前关闭。
            
                    
我有一个典型的用例,我需要将无符号char值转换为十六进制。

例如,

unsigned char *pBuffer = (unsigned char *)pvaluefromClient //where pvaluefromclient is received from a client


pBuffer的长度为32个字节,其值如下:

(gdb) p pBuffer
$5 = (unsigned char *) 0x7fd4b82cead0 "EBA5F7304554DCC3702E06182AB1D487"
(gdb) n


步骤1:我需要按以下方式拆分此pBuffer值:

{EB,A5,F7,30,45,54,DC,C3,70,2E,06,18,2A,B1,D4,87 }


步骤2:我需要将上述拆分后的值转换为十进制,如下所示:

const unsigned char pConvertedBuffer[16] = {
    235,165,247,48,69,84,220,195,112,46,6,24,42,177,212,135
};


关于如何实现STEP1和STEP2的任何想法?任何帮助,将不胜感激

最佳答案

这样的事情怎么样:

unsigned char *pBuffer = (unsigned char *)pvaluefromClient //where valuefromclient is received from a client

int i, j;
unsigned char target[16]
for(i=0;i<32;i+=2)
{
   sscanf((char*)&pBuffer[i], "%02X", &j);
   target[i/2] = j;
}

09-29 21:54