Как привести AnsiString к символу?
Что меня беспокоит, так это конверсия. Я использую C++ Rad Studio XE8 (не спрашиваю, почему я должен был).
У меня есть переменные
AnsiString a = "D8";
char sz;
я хочу sz
выглядеть так
char sz = 0xD8;
Как мне разыграть AnsiString
a
в char
чтобы sz
в конечном итоге равняется 0xD8
?
я пытался memcpy
, strcpy
и т.д. пока не смогли найти решения.
3 ответа
Решение
Одним из способов является:
unsigned char sz = strtol( a.c_str(), NULL, 16 );
Обратите внимание, что unsigned char
предпочтительнее, потому что обычный символ подписан, и 0xD8
вне диапазона обычного символа.
Более "C++Builder-ish" способ сделать это
unsigned char sz = StrToInt("0x" + a);
Хотя это сделает ненужное распределение памяти.
Попробуй это:
unsigned char sz = (unsigned char) std::stoul(a, 0, 16);