Method 1 – Using loops
#include <stdio.h>
int
main()
{
int
OCTALVALUES[] = {0, 1, 10, 11, 100, 101, 110, 111};
long
long
octal, tempOctal, binary, place;
int
rem;
printf
(
"Enter any Octal number: "
);
scanf
(
"%lld"
, &octal);
tempOctal = octal;
binary = 0;
place = 1;
while
(tempOctal > 0)
{
rem = tempOctal % 10;
binary = (OCTALVALUES[rem] * place) + binary;
tempOctal /= 10;
place *= 1000;
}
printf
(
"Octal number = %lld\n"
, octal);
printf
(
"Binary number = %lld"
, binary);
return
0;
}
Output
Enter any Octal number: 1720
Octal number = 1720
Binary number = 1111010000
Method 2 – Using Switch Cases
#include <stdio.h>
#define MAX 1000
int
main()
{
char
octalnum[MAX];
long
i = 0;
printf
(
"Enter any octal number: "
);
scanf
(
"%s"
, octalnum);
printf
(
"Equivalent binary value: "
);
while
(octalnum[i])
{
switch
(octalnum[i])
{
case
'0'
:
printf
(
"000"
);
break
;
case
'1'
:
printf
(
"001"
);
break
;
case
'2'
:
printf
(
"010"
);
break
;
case
'3'
:
printf
(
"011"
);
break
;
case
'4'
:
printf
(
"100"
);
break
;
case
'5'
:
printf
(
"101"
);
break
;
case
'6'
:
printf
(
"110"
);
break
;
case
'7'
:
printf
(
"111"
);
break
;
default
:
printf
(
"\n Invalid octal digit %c "
, octalnum[i]);
return
0;
}
i++;
}
return
0;
Output
Enter any octal number: 160
Equivalent binary value: 001110000