我有一个典型的用例,我需要将无符号字符值转换为十六进制。
例如,
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;
}
关于c++ - unsigned char* 值转为十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37747625/