我有一个 cstring 对象 str = "5043",现在我想转换为 Hex 并将其放入 UCHAR 数组中
UCHAR sample[2];
Sample[0] = 0X50
Sample[1] = 0X43
我怎样才能做到这一点?请给我建议
我有一个 cstring 对象 str = "5043",现在我想转换为 Hex 并将其放入 UCHAR 数组中
UCHAR sample[2];
Sample[0] = 0X50
Sample[1] = 0X43
我怎样才能做到这一点?请给我建议
您可以使用 直接从字符串中扫描十六进制值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
大小的一半。
为了使您的代码更简单,您可以使用联合,例如
union
{
UCHAR char_val[2];
long long_val;
};
CString str = "5043";
long_val = strtol(str.GetString(), nullptr, 16);
// use char_val here