Red de conocimiento informático - Computadora portátil - Programación en lenguaje C para convertir decimal a hexadecimal

Programación en lenguaje C para convertir decimal a hexadecimal

Método 1:

#include

#include

usando el espacio de nombres std;

string DecIntToHexStr(long long num)

{ string str; long long Temp = num / 16; int left = num % 16; p>DecIntToHexStr(Temp); if (izquierda < 10) str += (izquierda + '0'); else str += ('A' + izquierda - 10); DecStrToHexStr(string str){ long long Dec = 0 for (int i = 0; i < str.size(); ++i) Dec =?

Dec * 10 + str[i] - '0'; return DecIntToHexStr(Dec);}int main()

{ string DecStr; while (cin >> DecStr) { cout << "0x" + DecStrToHexStr(DecStr } return 0; }

Método 2:

#include

#include

#include

#include

#include

usando el espacio de nombres std;int main()

{ string decStr; >> decStr; int num = stoi(decStr); vectorv; mientras que (num) { int bit = num % 2; v.push_back(bit); num = num / 2; >reverse(v.begin(), v.end()); string hexStr; if (v.size() % 4 == 0) { for (int i = 0; i < v.size() / 4; ++i) { int temp = 0, k = 3; para (int j = i * 4; j < (i +?

1) * 4; ++j) { si (v[ j] == 1) temp += pow(2, k); --k; } if (temp <= 9) hexStr += temp; else hexStr += ('A' + temp - 10); /p>

else { int númerocero = 4 - v.size() % 4; para (int i = 0; i < númerocero; ++i) v.insert(v.begin(), 0); (int i = 0; i < v.tamaño()

/ 4; ++i) { int temp = 0, k = 3; para?

(int j = i * 4; j < (i + 1) * 4; ++j) { si (v[j] == 1) temp += pow(2, k); --k; }

if (temp <= 9) { stringstream ss; p>ss << temp; ss >> strTemp; hexStr += strTemp; } else hexStr += ('A' + temp - 10);

Información ampliada:

Hay tres formas de lograrlo, dos de las cuales son utilizar funciones del sistema y la otra es escribirlo directamente usted mismo.

El siguiente código es la implementación de tres métodos, incluidos números enteros de 2 dígitos y cualquier número entero (dentro de 2 elevado a 31). Puede elegir el método de implementación que necesita.

Las funciones del sistema utilizadas son

1.char *? itoa (valor int, char * str, int valor es el número a convertir, str es la cadena convertida); La ubicación de almacenamiento, base, es un número base (pero esta función no es una función estándar de C y algunos compiladores no la admiten). Entonces el código puede ser:

char buffer [33]; // Se usa para almacenar la cadena hexadecimal convertida, la longitud se puede definir según sea necesario char * inttohex(int ​​​​aa){ itoa (aa, buffer, 16); return (buffer);}?

2. sprintf(str,"%x",value);str es la ubicación de almacenamiento de la conversión, %x representa el formato hexadecimal, el valor es el número. para ser convertido. Entonces el código puede ser:

char buffer [33]; // Se usa para almacenar la cadena hexadecimal convertida, la longitud se puede definir según sea necesario char * inttohex(int ​​​​aa){ sprintf(buffer, "%x", aa); return (búfer);}

3. Escríbalo usted mismo

Si los parámetros son solo números enteros de dos dígitos, es muy simple.

El código es el siguiente:

#include #include char buffer [33] //Se utiliza para almacenar caracteres hexadecimales convertidos Cadena, la longitud se puede definir según sea necesario char * intttohex(int ​​​​aa)

{ sprintf(buffer, "%x", aa return (buffer);} int main ()

);

{? int num;? char * hex_str;? printf ("Ingrese un número: ");? scanf ("%d",&num);? hex_str = intttohex (num);? %sH \n", cadena_hex);? devolver 0;}