HOWTO · C++
Convierte la cadena en hexadecimal en C++
Este artículo introduce cómo convertir una cadena a un valor hexadecimal en C++
En esta página
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