Imprimir un valor hexadecimal en C

Waqar Aslam 12 octubre 2023
  1. Una descripción general de los números hexadecimales en el lenguaje de programación C
  2. Especificadores de formato en lenguaje de programación C
  3. El proceso de conversión a un valor hexadecimal
  4. Implementación de Impresión de Valores Hexadecimales
  5. Utilice %x para imprimir valores hexadecimales en minúsculas en C
  6. Utilice %X para imprimir valores hexadecimales en minúsculas en C
Imprimir un valor hexadecimal en C

Esta publicación discutirá la impresión de valores hexadecimales usando el lenguaje de programación C.

Una descripción general de los números hexadecimales en el lenguaje de programación C

Un número hexadecimal es un valor construido usando 16 símbolos en el lenguaje de programación C. Estos símbolos incluyen los diez sistemas numéricos normales que van del 0 al 9 y los seis símbolos adicionales que van de la A a la F.

El sistema numérico hexadecimal en C se denomina sistema numérico base-16. Es imposible guardar números hexadecimales en un tipo de datos como float, long o double; sin embargo, puede almacenarlos en un tipo de datos integrales.

Para ingresar un valor hexadecimal en el lenguaje de programación C, debe usar scanf, que proporciona especificadores de formato como %x y %X.

Un valor hexadecimal se representa en el lenguaje de programación C como 0x o 0X. Para imprimir un número entero en formato hexadecimal, se debe utilizar el especificador de formato %x o %X dentro del comando printf().

El valor se imprime en formato hexadecimal con las letras en minúsculas cuando se utiliza %x, como (a-f). El valor se imprime en formato hexadecimal con las letras en mayúsculas cuando se utiliza %X, como (A-F).

Especificadores de formato en lenguaje de programación C

Si desea que 0x se incluya siempre en la salida, no debe usar el símbolo #, ya que hace que 0x se anteponga a la salida incluso si el valor es 0.

La producción de ceros iniciales se puede lograr combinando el campo ancho con las banderas 0 de la siguiente manera: el valor de %08x agrega ceros iniciales al entero para que tenga un ancho de 8.

También existe la posibilidad de utilizar el campo de precisión, que dice lo siguiente: %.8x rellena el entero con ceros a la izquierda para que sea un total de 8 dígitos. Por tanto, 0x%.8x es otra opción a tener en cuenta para tu objetivo.

Si se forma un prefijo como parte de la conversión, como 0x para # o - para enteros negativos en conversiones con signo, estos requisitos de conversión serán diferentes. La longitud del prefijo se contará para el ancho, pero no se contará para el especificador de precisión.

Aquí hay un ejemplo de cómo se pueden usar varios especificadores para proporcionar varios estilos de salida para números hexadecimales.

#include <stdio.h>

int main() {
  printf("%10x\n", 252);
  printf("%010x\n", 252);
  printf("%#010x\n", 252);

  printf("%10.8x\n", 252);
  printf("%#10.8x\n", 252);
  printf("0x%.8x\n", 252);

  printf("%10x\n", 0);
  printf("%010x\n", 0);
  printf("%#010x\n", 0);

  printf("%10.8x\n", 0);
  printf("%#10.8x\n", 0);
  printf("0x%.8x", 252);
}

Producción :

        fc
00000000fc
0x000000fc
  000000fc
0x000000fc
0x000000fc
         0
0000000000
0000000000
  00000000
  00000000
0x000000fc

El proceso de conversión a un valor hexadecimal

Ahora, veamos cómo el sistema realiza esta conversión para que podamos comprenderlo por completo.

  1. Primero debe dividir el número proporcionado por 16 y anotar el resto de la operación.
  2. Continúe con el paso 1 hasta que el cociente sea igual a 0.
  3. Combine los componentes restantes en la secuencia opuesta a la que fueron adquiridos.

Implementación de Impresión de Valores Hexadecimales

En este ejemplo, por ejemplo, cuando dividimos 252 entre 16, obtenemos 15 como cociente y 12 como resto. Ahora, dividiremos 15 entre 16; el cociente será 0, mientras que el resto será 15.

Es importante notar que cuando 15 se divide por 16, el cociente resultante es 0. Entonces, aquí es donde dejamos de calcular.

Los dos residuos adquiridos después de las dos primeras etapas son 12 y 15, y sus correspondientes representaciones en hexadecimal son c y f. La representación hexadecimal de los residuos se organiza aquí en dirección opuesta a cómo se produjeron.

Por lo tanto, el valor 252 se representará en hexadecimal como fc en esta instancia.

Utilice %x para imprimir valores hexadecimales en minúsculas en C

El valor hexadecimal se imprimirá utilizando el modificador de formato %x en letras minúsculas. Como, ff, ffd, etc.

Veamos el siguiente ejemplo para ver cómo funciona el especificador de formato %x.

El primer paso es importar las bibliotecas necesarias y construir una función main().

A continuación, cree una variable con el tipo de datos int y asígnele el nombre integerValue. Luego, dale un valor entero que se convertirá en el valor hexadecimal correspondiente.

Luego, necesitamos convertir el valor entero a hexadecimal, lo que el especificador %x realizará automáticamente por nosotros e imprimirá el valor en letras minúsculas.

Código:

#include <stdio.h>

int main() {
  int integerValue = 252;
  printf("The converted value in hexadecimal is: %x\n", integerValue);
  return 0;
}

Producción :

The converted value in hexadecimal is: fc

Utilice %X para imprimir valores hexadecimales en minúsculas en C

En este ejemplo, usaremos %X en la instrucción print para generar el valor en letras mayúsculas.

#include <stdio.h>

int main() {
  int integerValue = 252;
  printf("The converted value in hexadecimal is: %X\n", integerValue);
  return 0;
}

Producción :

The converted value in hexadecimal is: FC
Waqar Aslam avatar Waqar Aslam avatar

I am Waqar having 5+ years of software engineering experience. I have been in the industry as a javascript web and mobile developer for 3 years working with multiple frameworks such as nodejs, react js, react native, Ionic, and angular js. After which I Switched to flutter mobile development. I have 2 years of experience building android and ios apps with flutter. For the backend, I have experience with rest APIs, Aws, and firebase. I have also written articles related to problem-solving and best practices in C, C++, Javascript, C#, and power shell.

LinkedIn