2010-09-06 25 views
39

tengo una lista de números de la siguiente manera:¿Cómo se muestran los números hexadecimales en C?

0, 16, 32, 48 ...

que necesito para dar salida a esos números en hexadecimal como:

0000 solución, 0010,0020,0030,0040 ...

me han tratado como:

printf("%.4x",a); // where a is an integer 

pero el resultado de que lo que tengo es:

0000, 0001, 0002, 0003, 0004 ...

creo que estoy cerca de allí. ¿Alguien puede ayudar ya que no soy tan bueno en printf en C.

Gracias.

+5

Pruebe 'printf ("% d:% .4x \ n ", a, a)', creo que su 'a' no tiene el valor que usted cree que tiene. –

+0

sí, tienes razón. estaba distraído. perdón por esta tonta pregunta ... – root

Respuesta

86

Probar:

printf("%04x",a); 
  • 0 - Izquierda-pads con el número ceros (0) en lugar de espacios, donde se especifica relleno.
  • 4 (ancho) - Número mínimo de caracteres que se imprimirán. Si el valor que se va a imprimir es más corto que este número, el resultado se justifica a la derecha dentro de este ancho rellenando el lado izquierdo con el carácter del panel. De manera predeterminada, este es un espacio en blanco, pero el cero inicial que usamos especifica un cero como pad char. El valor no se trunca aunque el resultado sea más grande.
  • x - Especificador para hexadecimal entero.

Más here

+0

resulta en: 0000, 0001, 0002, 0003, 0004 ... lo que necesito es: 0000,0010,0020,0030,0040 ... – root

+0

Funciona para mí. http://www.ideone.com/2VzY1 – codaddict

+0

hmm, qué raro ... Lo probé, pero siempre aparece como 0000, 0001, 0002, 0003, 0004 (uso Eclipse en Ubuntu, gcc ...) – root

0

Su código no tiene ningún problema. Imprime de la manera que desee. Alternativamente, usted puede hacer esto:

printf("%04x",a); 
4

i utilizar de esta manera:

printf("my number is 0x%02X\n",number); 
// output: my number is 0x4A 

Sólo cambia el número "2" a cualquier número de caracteres que desea imprimir;)

0

Puede utilizar el siguiente fragmento de código:

#include<stdio.h> 
int main(int argc, char *argv[]){ 
    unsigned int i; 
    printf("decimal hexadecimal\n"); 
    for (i = 0; i <= 256; i+=16) 
     printf("%04d  0x%04X\n", i, i); 
    return 0; 
} 

imprime ambos números decimales y hexadecimales en 4 lugares con el cojín de cero timbre.

Cuestiones relacionadas