如何将CString转换为CHAR数组?

时间:2012-04-20 08:08:50

标签: c++ visual-studio visual-c++ mfc cstring

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

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

我该怎么做?请指教我

3 个答案:

答案 0 :(得分:1)

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

你需要将它与一点点移位和按位结合起来,将结果分成你所需要的,但这应该是直截了当的。

希望这有帮助,

答案 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