我担心的是转换。我正在使用 C++ Rad Studio XE8(不要问为什么我必须这样做)。
我有变量
AnsiString a = "D8";
char sz;
我想sz
看起来像这样
char sz = 0xD8;
我如何将其转换AnsiString
a
为最终等于?char
sz
0xD8
我已经尝试过memcpy
,strcpy
等,但找不到解决方案。
我担心的是转换。我正在使用 C++ Rad Studio XE8(不要问为什么我必须这样做)。
我有变量
AnsiString a = "D8";
char sz;
我想sz
看起来像这样
char sz = 0xD8;
我如何将其转换AnsiString
a
为最终等于?char
sz
0xD8
我已经尝试过memcpy
,strcpy
等,但找不到解决方案。
一种更“C++Builder-ish”的方式是
unsigned char sz = StrToInt("0x" + a);
虽然它会进行不必要的内存分配。
一种方法是:
unsigned char sz = strtol( a.c_str(), NULL, 16 );
请注意,这unsigned char
是可取的,因为普通字符已签名,并且0xD8
超出普通字符的范围。
尝试这个:
unsigned char sz = (unsigned char) std::stoul(a, 0, 16);