c++ - unsigned char* 值转为十六进制

标签 c++ c

我有一个典型的用例,我需要将无符号字符值转换为十六进制。

例如,

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/

相关文章:

C++11 和异步,它是如何工作的?

c++ - 通过 operator[] 访问静态成员 unordered_map

c++ - 更改整个控制台背景颜色 (Win32 C++)

c++ - 如何在C++上解码字符串

c++ - 遍历抽象类的 vector

c++ - C++中的消费者/生产者

c - 如果输入无效输入(在 C 编程中),如何使该程序再次请求输入?

C 程序,将参数传递给信号处理函数?

c - 快速物流功能

c - 有没有办法限制整数数据类型的值范围