Converter String em Hex em C++
-
Utilizar
std::cout
estd::hex
para converter string para valor hexadecimal em C++ -
Utilizar
std::stringstream
estd::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 <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
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