Напишем программку которая будет преобразовывать символы в их шестнадцатеричное представление.
Получать входную строку будем из массива argv, ну а выводить при помощи потоков с++
Стандартно для программы с выводом в консоль:
#include <iostream> using namespace std; int main(int argc,char**argv) { // тут будет код return 0; }
Создадим указатель на первый символ первого элемента массива argv. Как вы знаете этот массив содержит консольные параметры заданные программе при запуске.
Мы условимся, что необходимый параметр — первый элемент этого массива.
Далее, пока существует указатель на текущий символ:
while(*pointer) { int code = (int)*pointer; // получаем числовой код символа cout.flags (ios::hex | ios::showbase ); // настраиваем вывод для вывода 16-ричных чисел cout << code << " "; // выводим код в 16-ричном формате pointer++; // переходим к следующему символу }
Рассмотрим немного подробнее флаги настройки cout:
- ios::hex — выводить числа в как шестнадцатеричные
- ios::showbase — выводить основание системы счисления (у нас — для вывода ‘0x’ в начале кода)
Компилируем:
g++ main.cpp -o main
И запускаем со строкой, которую необходимо преобразовать:
$ ./main Dimas 0x44 0x69 0x6d 0x61 0x73
Согласно таблице ascii всё верно.