令我不安的是转换。我正在使用C ++ Rad Studio XE8(不要问为什么我必须这样做。)
我有变量
bash
我希望AnsiString a = "D8";
char sz;
看起来像这样
sz
如何将char sz = 0xD8;
AnsiString
投射到a
,以便char
最终等同于sz
?
我已尝试过0xD8
,memcpy
等,但却找不到解决方案。
答案 0 :(得分:2)
一种方法是:
unsigned char sz = strtol( a.c_str(), NULL, 16 );
请注意,unsigned char
是首选,因为普通字符已签名,0xD8
超出普通字符范围。
答案 1 :(得分:2)
更多“C ++ Builder-ish”这样做的方法是
unsigned char sz = StrToInt("0x" + a);
虽然它会进行不必要的内存分配。
答案 2 :(得分:1)
试试这个:
unsigned char sz = (unsigned char) std::stoul(a, 0, 16);