Шестнадцатеричное значение в ASCII - PullRequest
0 голосов
/ 11 октября 2019

У меня есть вопрос ASCII таблицы.

Если у меня есть следующая строка:

string a = "\x25\x12";

Как я могу извлечь \ x25 и \ x12 отдельно, чтобы я мог распечатать их десятичные числа, соответствующие ASCIIзначения в C ++?

1 Ответ

2 голосов
/ 11 октября 2019

Если эта строка инициализируется так, как вы ее представили (т.е. с литералом в коде), то компилятор уже разбил ее на два символа. Вы можете просто перебрать его (или извлечь значения с помощью оператора []).

std::string a = "\x25\x12";
std::cout << a.length() << '\n'; //2
for(char c: a) 
{
    std::cout << static_cast<int>(c) << ' ';
}
std::cout << '\n'
          << static_cast<int>(a[0]) << ' '
          << static_cast<int>(a[1]) << ' '

Если вы читаете эту строку из любого ввода (например, стандартного ввода или файла), вам нужно будет парсит first.


В качестве примечания, реализации C ++ могут свободно выбирать любую кодировку, необязательно совместимую с ASCII (хотя я не знаю ни одного компилятора, который не использует ASCII на основекодирование)

...