如何将 AnsiString 转换为 char?

How to cast AnsiString to char?

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

我有变量

AnsiString a = "D8";
char sz;

我希望sz看起来像这样

char sz = 0xD8;

如何将 AnsiString a 转换为 char 以便 sz 最终等于 0xD8

我尝试了 memcpystrcpy 等,但找不到解决方案。

一种方法是:

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

请注意 unsigned char 更可取,因为 plain char 已签名,而 0xD8 超出了 plain char 的范围。

试试这个:

unsigned char sz = (unsigned char) std::stoul(a, 0, 16);

更"C++Builder-ish"的方法是

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

尽管它会进行不必要的内存分配。