我有一个cstring对象str =“5043”,现在我想转换为Hex并将其放在UCHAR数组中,如
UCHAR sample[2];
Sample[0] = 0X50
Sample[1] = 0X43
我该怎么做?请指教我
答案 0 :(得分:1)
答案 1 :(得分:1)
您可以使用sscanf()
直接从字符串中扫描十六进制值,如下所示:
UCHAR sample[2];
for ( int i = 0; i < str.length() / 2 ; i++) {
sscanf( (str.substr(i*2,2)).c_str(), "%hx", &sample[i]);
}
h
是简短的,x
显然是十六进制的。
此外,这假设UCHAR
数组声明为string
大小的一半。
答案 2 :(得分:0)
为了使您的代码更简单,您可以使用union,例如
union
{
UCHAR char_val[2];
long long_val;
};
CString str = "5043";
long_val = strtol(str.GetString(), nullptr, 16);
// use char_val here