3

我担心的是转换。我正在使用 C++ Rad Studio XE8(不要问为什么我必须这样做)。

我有变量

AnsiString a = "D8";
char sz;

我想sz看起来像这样

char sz = 0xD8;

我如何将其转换AnsiString a为最终等于?charsz0xD8

我已经尝试过memcpy,strcpy等,但找不到解决方案。

4

3 回答 3

2

一种更“C++Builder-ish”的方式是

unsigned char sz = StrToInt("0x" + a);

虽然它会进行不必要的内存分配。

于 2015-12-02T23:43:15.047 回答
2

一种方法是:

unsigned char sz = strtol( a.c_str(), NULL, 16 );

请注意,这unsigned char是可取的,因为普通字符已签名,并且0xD8超出普通字符的范围。

于 2015-12-02T23:40:34.007 回答
1

尝试这个:

unsigned char sz = (unsigned char) std::stoul(a, 0, 16);
于 2015-12-02T23:42:09.967 回答