Есть ли функция, которая возвращает значение ASCII символа? (С++)

Мне нужна функция, которая возвращает значение ASCII символа, включая пробелы, табуляции, новые строки и т. д.

Аналогично, какая функция выполняет преобразование между шестнадцатеричными, десятичными и двоичными числами?


person Community    schedule 10.05.2009    source источник


Ответы (5)


char c;
int ascii = (int) c;
s2.data[j]=(char)count;

Символ является целым числом, функции преобразования не требуются.

Может быть, вы ищете функции, которые отображают целые числа в виде строки, используя шестнадцатеричное, двоичное или десятичное представление?

person gimel    schedule 10.05.2009

Вам не нужна функция для получения значения ASCII — просто преобразуйте в целое число с помощью (неявного) приведения:

int x = 'A';  // x = 65
int y = '\t'; // x = 9

Чтобы преобразовать число в шестнадцатеричное или десятичное, вы можете использовать любой из членов семейства printf:

char buffer[32];  // make sure this is big enough!
sprintf(buffer, "%d", 12345);  // decimal: buffer is assigned "12345"
sprintf(buffer, "%x", 12345);  // hex: buffer is assigned "3039"

Нет встроенной функции для преобразования в двоичный формат; вам придется свернуть свой собственный.

person Adam Rosenfield    schedule 10.05.2009

Если вы хотите получить ASCII-значение символа в своем коде, просто поместите символ в кавычки.

char c = 'a';
person Community    schedule 10.05.2009

Возможно, вы путаете внутреннее представление с выводом. Чтобы узнать, какое значение имеет символ:

char c = 'A';
cout << c << " has code " << int(c) << endl;

Точно так же для шестнадцатеричных значений - все числа являются шестнадцатеричными числами, поэтому это просто вопрос вывода:

int n = 42;
cout << n << " in hex is " << hex << n << endl;

«Шестнадцатеричный» в операторе вывода — это манипулятор C++. Есть манипуляторы для шестнадцатеричного и десятичного (dec), но, к сожалению, нет для двоичного.

person Community    schedule 10.05.2009

Что касается шестнадцатеричного и двоичного - это просто представления целых чисел. Вероятно, вам нужно что-то вроде printf("%d",n) и printf("%x",n) - первая печатает десятичную, вторая шестнадцатеричную версию того же числа. Уточните, что вы пытаетесь сделать -

person Jeff    schedule 10.05.2009