online hexadecimal hexa convert c

hexadecimal - int to hex converter



¿Cómo puedo convertir un entero a una cadena hexadecimal en C? (6)

¿Cómo puedo convertir un entero a una cadena hexadecimal en C?

Ejemplo: El entero 50 se convertiría a la cadena hexadecimal "32" o "0x32" .


Convertir un entero a una cadena también involucra una matriz de caracteres o administración de memoria.

Para manejar esa parte para tales matrices cortas, el código podría usar un literal compuesto , desde C99, para crear un espacio de matriz, sobre la marcha . La cadena es válida hasta el final del bloque.

#define UNS_HEX_STR_SIZE ((sizeof (unsigned)*CHAR_BIT + 3)/4 + 1) // compound literal v--------------------------v #define U2HS(x) unsigned_to_hex_string((x), (char[UNS_HEX_STR_SIZE]) {0}, UNS_HEX_STR_SIZE) char *unsigned_to_hex_string(unsigned x, char *dest, size_t size) { snprintf(dest, size, "%X", x); return dest; } int main(void) { // 3 array are formed v v v printf("%s %s %s/n", U2HS(UINT_MAX), U2HS(0), U2HS(0x12345678)); char *hs = U2HS(rand()); puts(hs); // `hs` is valid until the end of the block }

Salida

FFFFFFFF 0 12345678 5851F42D


El siguiente código toma un número entero y crea una cadena en formato hexadecimal:

int num = 32424; char hex[5]; sprintf(hex, "%x", num); puts(hex);

da

7ea8


Es interesante que estas respuestas utilicen printf como si fuera un hecho. printf convierte el entero en un valor de cadena hexadecimal.

//************************************************************* // void prntnum(unsigned long n, int base, char sign, char *outbuf) // unsigned long num = number to be printed // int base = number base for conversion; decimal=10,hex=16 // char sign = signed or unsigned output // char *outbuf = buffer to hold the output number //************************************************************* void prntnum(unsigned long n, int base, char sign, char *outbuf) { int i = 12; int j = 0; do{ outbuf[i] = "0123456789ABCDEF"[num % base]; i--; n = num/base; }while( num > 0); if(sign != '' ''){ outbuf[0] = sign; ++j; } while( ++i < 13){ outbuf[j++] = outbuf[i]; } outbuf[j] = 0; }


Este código

int a = 5; printf("%x/n", a);

huellas dactilares

5

Este código

int a = 5; printf("0x%x/n", a);

huellas dactilares

0x5

Este código

int a = 89778116; printf("%x/n", a);

huellas dactilares

559e7c4

Si capitaliza la x en el formato, escribe en mayúscula el valor hexadecimal:

int a = 89778116; printf("%X/n", a);

huellas dactilares

559E7C4

Si desea imprimir punteros, utilice el especificador de formato p:

char* str = "foo"; printf("0x%p/n", str);

huellas dactilares

0x01275744


Hice una librairy para hacer conversión Hexadecimal / Decimal sin el uso de stdio.h . Muy simple de usar:

char* dechex (int dec);

Esto usará calloc() para devolver un puntero a una cadena hexadecimal, de esta manera la cantidad de memoria utilizada se optimiza, así que no olvides usar free()

Aquí el enlace en github: https://github.com/kevmuret/libhex/


Usualmente con printf (o uno de sus primos) usando el especificador de formato %x .