Tengo una lista de números de la siguiente manera:
0, 16, 32, 48…
Necesito generar esos números en hexadecimal como:
0000,0010,0020,0030,0040 …
He intentado una solución como:
printf("%.4x", a); // Where a is an integer
Pero el resultado que obtuve fue:
0000, 0001, 0002, 0003, 0004…
Creo que estoy cerca de ahí. ¿Cómo puedo arreglarlo?
no soy tan bueno en printf
Cª.
coadicto
Intentar:
printf("%04x",a);
0
– Rellena a la izquierda el número con ceros (0) en lugar de espacios, donde se especifica el relleno.4
(ancho) – Número mínimo de caracteres a imprimir. Si el valor a imprimir es más corto que este número, el resultado se justifica a la derecha dentro de este ancho rellenando a la izquierda con el carácter de relleno. De forma predeterminada, este es un espacio en blanco, pero el cero inicial que usamos especifica un cero como carácter de relleno. El valor no se trunca incluso si el resultado es mayor.x
– Especificador para entero hexadecimal.
Más aquí
-
da como resultado: 0000, 0001, 0002, 0003, 0004… lo que necesito es: 0000,0010,0020,0030,0040…
– usuario188276
6 de septiembre de 2010 a las 4:44
-
hmm, qué raro… Lo probé pero siempre aparece como 0000, 0001, 0002, 0003, 0004 (yo uso Eclipse en Ubuntu, gcc…)
– usuario188276
6 de septiembre de 2010 a las 4:49
-
@tsubasa: imprímalos como enteros decimales al mismo tiempo, solo para verificar que el resto de su código haga lo que piensa.
– detly
6 de septiembre de 2010 a las 4:58
-
El original
%.4x
la notación de formato estaba bien y logra los mismos resultados que%04x
. El problema era principalmente los datos suministrados a laprintf()
.–Jonathan Leffler
12 de octubre de 2013 a las 14:03
zeilja
Yo lo uso así:
printf("my number is 0x%02X\n",number);
// Output: my number is 0x4A
Simplemente cambie el número “2” a cualquier número de caracteres que desee imprimir;)
loxxy
Su código no tiene ningún problema. Se imprime de la manera que desee. Alternativamente, puedes hacer esto:
printf("%04x",a);
hmofrad
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 números decimales y hexadecimales en 4 lugares con relleno de cero.
salman mehdi
#include <stdio.h>
int main() {
int a[5] = {22, 33, 44, 55, 66};
int *ptr = NULL;
ptr = a; /* Point to the first array element */
printf("%d %x\n", *ptr, ptr); /* 22 */
ptr++;
printf("%d %x\n", *ptr, ptr); /* 33 */
ptr += 3;
printf("%d %x\n", *ptr, ptr); /* 66 */
ptr--;
printf("%d %x\n", *ptr, ptr); /* 55 */
ptr -= 2;
printf("%d %x\n", *ptr, ptr); /* 33 */
return 0;
}
Este programa demuestra cómo usar un puntero para recorrer una matriz en C.
El código declara una matriz de enteros a de tamaño 5 y la inicializa con los valores 22, 33, 44, 55 y 66. También declara un puntero ptr y lo inicializa en NULL.
Luego, al puntero ptr se le asigna la dirección del primer elemento de la matriz a. Luego, el programa imprime el valor y la dirección de memoria del elemento apuntado usando la función printf.
Luego, el puntero se incrementa en uno, lo que hace que apunte al segundo elemento de la matriz. El programa imprime de nuevo el valor y la dirección de memoria del elemento apuntado.
Este proceso de incrementar el puntero e imprimir el valor señalado y la dirección se repite para el tercer y quinto elemento de la matriz.
A continuación, el puntero se reduce en uno y se vuelve a imprimir. Finalmente, el puntero se reduce en dos y el valor y la dirección del elemento apuntado se imprimen nuevamente.
La salida del programa se muestra a continuación:
22 febd4760
33 febd4764
66 febd4770
55 febd476c
33 febd4764
Los valores impresos corresponden a los valores de los elementos del arreglo señalados por ptr, mientras que las direcciones de memoria corresponden a las direcciones de esos elementos en la memoria.
-
También es una respuesta falsa. La pregunta no es sobre direcciones de memoria (punteros) en formato hexadecimal; se trata de generar algunos enteros regulares en formato hexadecimal.
-Peter Mortensen
hace 11 minutos
-
También es una respuesta falsa. La pregunta no es sobre direcciones de memoria (punteros) en formato hexadecimal; se trata de generar algunos enteros regulares en formato hexadecimal.
-Peter Mortensen
hace 11 minutos
Intentar
printf("%d: %.4x\n", a, a)
Creo que sua
no tiene el valor que crees que tiene.– usuario180100
6 de septiembre de 2010 a las 4:49
sí tienes razón. yo estaba distraído. perdon por esta tonta pregunta…
– usuario188276
6 de septiembre de 2010 a las 4:58