Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

[C++] Таблица ASCII

Участник
Участник
Статус
Оффлайн
Регистрация
23 Фев 2017
Сообщения
612
Реакции
504
Видел несколько тем с генерацией случайных строк, где в качестве "алфавита" (т.е символы, которые используются для генерации) используется массив типа char.

Но верна ли такая реализация? - Безусловно, так судить я не могу, потому что каждое решение проблемы является верным, если оно решает проблему.

Но я готов рассказать про более изящный метод, для которого нам понадобится тот самый алфавит в нашем компьютере - ASCII.

ASCII (American standard code for information interchange) - набор символов (т.е алфавит), где каждый символ сопоставлен с числовым значением от 0 до 255 (всего 256 значений).

Алфавит состоит из:
  • Десятичных цифр
  • Английский алфавит
  • Национальный алфавит (В моем случае русский)
  • Знаки препинания
  • И прочие...
Чтобы получить символ, зная порядковый номер элемента, нужно использовать данный код:
Код:
Expand Collapse Copy
int num = 55; //Порядковый номер
cout << (char)num << endl; //Приводим к char и получаем символ
Nh7bxiQ.png

Чтобы получить порядковый номер надо сделать все с точностью до наоборот:
Код:
Expand Collapse Copy
char ch = 'a';
cout << (int)ch << endl;
cD3tpvM.png

Теперь взглянем на всю таблицу, для этого мне пришлось завести не большой цикл:
P4luqLo.png


Вот output:
XKY7Fmx.png


А теперь перейдем к интересностям:
  1. Если вы скомпилируете и запустите этот код, то при выводе таблицы вы услышите звук винды. Среди символов в этой таблице есть и ЗВУК.
  2. Можно заметить, что цифры, большие и маленькие лат. буквы идут друг за другом.
    Что означает, что такую прелесть можно использовать в тех самых генераторах случайной строки:
    hwTnsCR.png

    (Функция получения случайных чисел с заданными границами, функция получилась кривой)
    Вот в этом коде явно отражено использование этой таблицы:
    GYDJ7D7.png

    Ну и вот что получаем:
    IDJkUib.png
  3. Так же можно делать проверки, если символ из только нижнего регистра:
    Код:
    Expand Collapse Copy
    if(symbol >= 'a' && symbol <= 'z') //ПК сам превратит все в int, сравнит и даст верный результат
Вывод:
Эта таблица очень удобна и практична, когда задача касается строк.
 
Последнее редактирование:
Это ты для меня написал?:roflanEbalo::roflanEbalo::roflanEbalo::roflanEbalo::roflanEbalo:
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Назад
Сверху Снизу