0

我有一个 cstring 对象 str = "5043",现在我想转换为 Hex 并将其放入 UCHAR 数组中

UCHAR sample[2];
Sample[0] = 0X50 
Sample[1] = 0X43

我怎样才能做到这一点?请给我建议

4

3 回答 3

1

你试过strol吗?这似乎有点低技术,但应该做的伎俩。不要忘记通过 16 作为基础...

您需要将它与一点移位和按位与运算结合起来,以将结果完全拆分为您需要的结果,但这应该很简单。

希望这可以帮助,

于 2012-04-20T08:14:05.237 回答
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大小的一半。

于 2012-04-20T08:36:31.567 回答
0

为了使您的代码更简单,您可以使用联合,例如

    union
    {
    UCHAR char_val[2];
    long long_val;
    };

    CString str = "5043";
    long_val = strtol(str.GetString(), nullptr, 16);
    // use char_val here
于 2012-04-20T08:57:25.530 回答