Выводим шестнадцатеричное представление строки в С++

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

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий