Convierte la cadena en hexadecimal en C++

Jinku Hu 12 octubre 2023
  1. Usa std::cout y std::hex para convertir la cadena a valor hexadecimal en C++
  2. Usa std::stringstream y std::hex para convertir la cadena a un valor hexadecimal en C++
Convierte la cadena en hexadecimal en C++

Este artículo demostrará múltiples métodos sobre cómo convertir la cadena a hexadecimal en C++.

Usa std::cout y std::hex para convertir la cadena a valor hexadecimal en C++

La notación hexadecimal es un formato común para leer archivos binarios que representan archivos de programa, formato codificado o simplemente texto. Por lo tanto, se necesitaría generar el contenido de los archivos con datos hexadecimales y darles salida según sea necesario.

En este ejemplo, damos salida al objeto string almacenado como caracteres hexadecimales a la consola. Observe que C++ proporciona un manipulador de E/S std::hex que puede modificar la base numérica de los datos de la cadena. Un objeto string debe ser descompuesto como caracteres individuales y luego modificado individualmente con std::hex a su respectiva representación hexadecimal. Implementamos el bucle basado en el rango para iterar sobre los caracteres de la string y redirigir los datos modificados al flujo 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;
}

Producción :

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

Usa std::stringstream y std::hex para convertir la cadena a un valor hexadecimal en C++

El método anterior carece de la característica de almacenar los datos hexadecimales en el objeto. La solución a este problema es crear un objeto stringstream, donde insertamos los valores hexadecimales de los caracteres string usando la iteración. Una vez que los datos están en stringstream, puede construir un nuevo objeto string para almacenar los datos de los caracteres modificados.

Note que los datos pueden ser emitidos directamente desde el objeto stringstream, pero en el siguiente código de ejemplo, se emplea una forma más simple - cout << string. Un caso de uso final alternativo podría ser escribir los datos hexadecimales directamente en el archivo, usando las utilidades del sistema de archivos de la biblioteca estándar.

#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;
}

Producción :

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

Artículo relacionado - C++ String