Ir ao conteúdo

Converter decimal para hexadecimal em C++


Otto

Posts recomendados

Postado

Pessoal, como faço para converter um inteiro em uma string hexadecimal?

Vi que existe a função itoa(), mas não é padrão, então descartei.

O jeito padrão é usar sprintf (ou snprintf), mas daí vem outro problema:

string hex;
int i = 255;
sprintf(&hex[0], "%X", i);

Para que isso funcione, eu preciso fazer um hex.resize(2) para que o "FF" caiba nessa string. Mas como eu vou saber antecipadamente quantos caracteres eu vou precisar?

E, mesmo que eu saiba, por exemplo, que os números irão de 0 a 255 (2 caracteres), tenho outro problema:

string hex;
hex.resize(2);
int i = 1;
sprintf(&hex[0], "%X", i);

// hex[0] = "1"
// hex[1] = NULL

Quando o esperado deveria ser a string "01".

Podem me dar uma ajuda com isso? Conheço bem pouco de C++.

Postado

Usando C++ puro, eu consegui assim:



#include <sstream>
#include <iostream>

using namespace std;

int main(void)
{

unsigned int i = 10;
stringstream hexa[2];

hexa[0] << hex << i; /* hex é originado de std::hex */

cout << hexa[0].str() << endl;

return 0;
}

Troquei "hex" por "hexa", pois o primeiro já um tipo de conversão pré-definido em C++.

PS: Vale lembrar que "hexa" é do tipo 'string', portanto, o comportamento é diferente de 'char hexa[2]'.

Não sei qual a sua necessidade em converter o 'int' em 'string' e depois mostrar em hexadecimal.

Caso não seja necessário a conversão para 'string', então, segue uma versão simplificada:



#include <sstream>
#include <iostream>

using namespace std;

int main(void)
{

unsigned int i = 10;

cout << hex << i << endl; /* hex é originado de std::hex */

return 0;
}

Postado

Oi, valeu a resposta.

Eu preciso juntar uns bytes lidos de um arquivo, concatená-los e daí realizar a conversão de base para ver que número significa.

Então, isso resolve:


stringstream ss;
ss << hex << 255;
string hexa = ss.str(); // "FF"

C++ é um verdadeiro pesadelo para quem está acostumado com linguagens de nível mais alto (Java, Python etc). Mas aos poucos está indo =)

Postado

oi, gostaria de saber como ficaria para converter string em int em C++??

é só inverter as posições ?

ex:

i << hex << hexa[0];

E na hora de exibir, por que você coloca ".str()" ?

cout << hexa[0].str() << endl;

falou

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...