Converter String em Hex em C++

Jinku Hu 12 outubro 2023
  1. Utilizar std::cout e std::hex para converter string para valor hexadecimal em C++
  2. Utilizar std::stringstream e std::hex para converter String para valor hexadecimal em C++
Converter String em Hex em C++

Este artigo irá demonstrar múltiplos métodos sobre como converter cordel em hexadecimal em C++.

Utilizar std::cout e std::hex para converter string para valor hexadecimal em C++

A notação hexadecimal é um formato comum de leitura de ficheiros binários representando ficheiros de programas, formato codificado, ou apenas texto. Assim, seria necessário gerar o conteúdo do ficheiro com dados hexadecimais e produzi-lo conforme necessário.

Neste exemplo, o objecto string armazenado é emitido como caracteres hexadecimais para a consola. Note-se que C++ fornece um manipulador de I/O std::hex que pode modificar a base de números dos dados do fluxo. Um objecto string deve ser decomposto como caracteres únicos e depois modificado individualmente com std::hex para a sua respectiva representação hexadecimal. Implementamos o loop baseado no intervalo para iterar sobre caracteres string e redireccionar os dados modificados para o fluxo cout.

#include <iostream>
#include <iterator>
#include <sstream>
#include <string>

using std::cout;
using std::endl;
using std::hex;
using std::string;
using std::stringstream;

int main() {
  string s1 = "This will be converted to hexadecimal";
  string s2;

  cout << "string: " << s1 << endl;
  cout << "hexval: ";
  for (const auto &item : s1) {
    cout << hex << int(item);
  }
  cout << endl;

  return EXIT_SUCCESS;
}

Resultado:

string: This will be converted to hexadecimal
hexval: 546869732077696c6c20626520636f6e76657274656420746f2068657861646563696d616c

Utilizar std::stringstream e std::hex para converter String para valor hexadecimal em C++

O método anterior carece da característica de armazenar os dados hexadecimais no objecto. A solução para esta questão é criar um objecto stringstream, onde inserimos os valores hexadecimais dos caracteres string utilizando a iteração. Uma vez os dados em stringstream, pode construir um novo objecto string para armazenar dados de caracteres modificados.

Note-se que os dados podem ser emitidos directamente a partir do objecto stringstream, mas no exemplo seguinte, é utilizada uma forma mais simples - cout << string. Um caso alternativo de utilização final poderia ser escrever os dados hexadecimais directamente no ficheiro, utilizando os utilitários do sistema de ficheiros da biblioteca padrão.

#include <iostream>
#include <iterator>
#include <sstream>
#include <string>

using std::cout;
using std::endl;
using std::hex;
using std::string;
using std::stringstream;

int main() {
  string s1 = "This will be converted to hexadecimal";
  string s2;
  stringstream ss;

  cout << "string: " << s1 << endl;

  for (const auto &item : s1) {
    ss << hex << int(item);
  }
  s2 = ss.str();
  cout << "hexval: " << s2 << endl;

  return EXIT_SUCCESS;
}

Resultado:

string: This will be converted to hexadecimal
hexval: 546869732077696c6c20626520636f6e76657274656420746f2068657861646563696d616c
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artigo relacionado - C++ String