Home »
C programming language
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]
Reading value in Hexadecimal format
"%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