Converter String em Hex em C++

  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++

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 <string>
#include <sstream>
#include <iterator>

using std::cout; using std::endl;
using std::string; using std::hex;
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 <string>
#include <sstream>
#include <iterator>

using std::cout; using std::endl;
using std::string; using std::hex;
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

Artigo relacionado - C++ String

  • Como determinar se uma string é um número em C++
  • Como converter string em maiúsculas em C++
  • Artigo relacionado - C++ Hex

  • Compare Duas Strings Ignorando o Caso em C++
  • Verificar se a string está vazia em C++