Working with Hexadecimal values in C programming language

Hexadecimal value has 16 alphanumeric values from 0 to 9 and A to F, with the base 16. (Read more about Computer number systems), here we will learn how to work with hexadecimal values in c programming language?

Representation of Hexadecimal numbers in C programming

In C programming language, a Hexadecimal number is represented by preceding with "0x" or "0X", thus the value in Hexadecimal can be written as "0x64" (which is equivalent to 100 in Decimal).

Assigning the Hexadecimal number in a variable

There is no special type of data type to store Hexadecimal values in C programming, Hexadecimal number is an integer value and you can store it in the integral type of data types (char, short or int).

Let suppose, we have two values in Hexadecimal "64" (100 in Decimal) and "FAFA" (64250 in Decimal).

We are storing "64" in an unsigned char variable (64 is small value and can be stored with in a Byte) and "FAFA" in the int variable.

Consider the following statements

`unsigned char a=0x64;`
`unsigned char b=0xFAFA;`

Printing the Hexadecimal number of a variable

To print integer number in Hexadecimal format, "%x" or "%X" is used as format specifier in printf() statement.

"%x" prints the value in Hexadecimal format with alphabets in lowercase (a-f).

"%X" prints the value in Hexadecimal format with alphabets in uppercase (A-F).

Example

Consider the code, which is printing the values of a and b using both formats

```int main()
{
unsigned char a=0x64;
int b=0xFAFA;

printf("value of a: %X [%x]\n",a,a);
printf("value of b: %X [%x]\n",b,b);

return 0;
}
```

Output

```value of a: 64 [64]
value of b: FAFA [fafa]
```

"%x" or "%X" is used with scanf() statement to read the value from the user.

Example

Consider the following code

```#include <stdio.h>
int main()
{
unsigned char a;
int b;

printf("Enter value of a: ");
scanf("%x",&a);
printf("Enter value of b: ");
scanf("%x",&b);

printf("Value of a: Hex: %X, Decimal: %d\n",a,a);
printf("Value of b: Hex: %X, Decimal: %d\n",b,b);

return 0;
}
```

Output

```Enter value of a: 64
Enter value of b: FAFA
Value of a: Hex: 64, Decimal: 100
Value of b: Hex: FAFA, Decimal: 64250
```

Declaring integer array by assigning hexadecimal values

Consider the following example, where integer array is declaring with the Hexadecimal values and printing in both formats Decimal and Hexadecimal.

Example

```#include <stdio.h>
int main()
{
int arr[]={0x64, 0xAB0, 0xA0A0, 0xFAFA, 0x100};
int i;

printf("Array elements are\n");
for(i=0;i<5;i++)
printf("Decimal: %d, Hex: %X\n",arr[i],arr[i]);

return 0;
}
```

Output

```Array elements are
Decimal: 100, Hex: 64
Decimal: 2736, Hex: AB0
Decimal: 41120, Hex: A0A0
Decimal: 64250, Hex: FAFA
Decimal: 256, Hex: 100
```