Напишем программку которая будет преобразовывать символы в их шестнадцатеричное представление.
Получать входную строку будем из массива 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 всё верно.







