Есть ли функция, которая возвращает значение ASCII символа? (C ++) - PullRequest
13 голосов
/ 10 мая 2009

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

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

Ответы [ 5 ]

25 голосов
/ 10 мая 2009
char c;
int ascii = (int) c;
s2.data[j]=(char)count;

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

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

8 голосов
/ 10 мая 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"

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

3 голосов
/ 10 мая 2009

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

char c = 'a';
2 голосов
/ 10 мая 2009

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

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

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

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

"hex" в операторе вывода - это манипулятор C ++. Существуют манипуляторы для шестнадцатеричного и десятичного (десятичного), но, к сожалению, не для двоичного.

0 голосов
/ 10 мая 2009

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

...