Как напечатать Ascii код строки в C ++

0

У меня есть строка, и я хочу напечатать шестнадцатеричное значение каждого элемента ascii кода. например, если строка "0200", выход будет 30323030.

и вот мой код:

string bit_pattern;
bit_pattern = "5678008180000000";
cout << hex << bit_pattern;

но он печатает 5678008180000000 вместо 35363738303038313830303030303030 как я его исправить???

  • 2
    Для каждого char в строке преобразуйте в unsigned int и cout с hex манипуляцией.
  • 0
    Я уверен, что вы можете привести его или преобразовать в hashCode (). Существует связь между хэш-кодом и ascii
Теги:
string
ascii

2 ответа

3

Вы можете использовать следующие

for (int i=0; i<bit_pattern.length(); i++)
    cout << hex << (int)bit_pattern[i];

для печати символа ascii (в шестнадцатеричном формате) char.

1

Вы просто отправляете ту же std::string прямо в std::cout. Просто отправка hex манипулятора не собирается магически преобразовывать все эти символы.

Я признаю, что это полный перебор, но мне было скучно:

#include <iostream>
#include <string>
#include <iomanip>
#include <sstream>

class ascicodes
{
    std::ostringstream ss;

public:
    friend std::ostream& operator <<(std::ostream& os, const ascicodes& obj)
    {
        os << obj.ss.str();
        return os;
    }

    ascicodes(const std::string& s)
    {
        ss << std::hex << std::setfill('0');
        std::for_each(s.begin(), s.end(),
            [this](char ch)
            {
                ss << std::setw(2) << static_cast<unsigned int>(ch);
            });
    }
};


int main()
{
    std::string bit_pattern = "5678008180000000";
    std::cout << ascicodes(bit_pattern) << std::endl;
    std::cout << ascicodes("A completely different string") << std::endl;
    return 0;
}

Вывод

35363738303038313830303030303030
4120636f6d706c6574656c7920646966666572656e7420737472696e67
  • 0
    добавить std :: hex в main - не в манипулятор
  • 0
    @ DieterLücking да, я забыл об этом в классе. я предназначил это там. Вы думаете, что она лучше в основном и просто идет с десятичной в классе? Это должно быть до вставки значения, единственная причина, по которой я это упоминаю.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню