# K & R C Programs Exercise 2-3.

K and R C, Solution to Exercise 2-3:
C Function htoi() which converts a string of hexa decimal digits into its equivalent integer value. K and R C Program. Exercises provides the solution to all the exercises in the C Programming Language, second addition, by Brian W.Keringhan and Dennis M.Ritchie(Prentice Hall,1988). You can learn and solve K&R C Programs Exercise. Read more about C Programming Language .

`/************************************************************ You can use all the programs on  www.c-program-example.com* for personal and learning purposes. For permissions to use the* programs for commercial purposes,* contact [email protected]* To find more C programs, do visit www.c-program-example.com* and browse!* *                      Happy Coding***********************************************************/#define YES 1#define NO  0//HTOI: CONVERT HEXADECIMAL STRING S TO INTEGERint htoi(char s[]){ int hexdigit, i, inhex, n,i=0; if(s[i]=='0'){  ++i;  if(s[i]=='x' || s[i]=='x')   ++i; } n=0; inhex=YES; for(;inhex==YES;++i){  if(s[i]>='0' && s[i]<='9')   hexdigit=s[i]-'0';  else if(s[i]>='a' && s[i]<='f')   hexdigit=s[i]-'a'+10;  else if (s[i]>='A' && s[i]<='F')   hexdigit=s[i]-'A'+10;  else   inhex=NO;  if(inhex==YES)   n=16*n+hexdigit; } return n;}`
`Read more Similar C ProgramsC BasicK and R C Programs Exercise`

You can easily select the code by double clicking on the code area above.

You can discuss these programs on our Facebook Page. Start a discussion right now,

our page!

(you can send this program to your friend using this button)

To browse more C Programs visit this link
(c) www.c-program-example.com

# C program to convert a Binary number into its equivalent Decimal, Octal and Hexadecimal numbers.

C Program to convert binary number into its equivalent Decimal, Octal, and Hexadecimal representations. In this program we convert a binary number to decimal. Then convert that decimal number to octal and Hexadecimal equivalent.

The program implements various functions to do the job.

• binary_to_decimal : Convert given binary number to it’s decimal equivalent
• decimal_to_octal : Convert from decimal to octal
• decimal_to_hex : Convert from decimal to hexadecimal

The main function takes care of getting input from user, calling the above functions and displaying the results.

### The Program

 #include /* * Function to convert a given decimal number to its * hexadecimal equivalent. */ int decimal_to_hex(long number, char *hexstr, int pos) { long i; int new_position, n; char hexchar; new_position = pos; if(number > 0) { i = number % 16; n = number / 16; new_position = decimal_to_hex(n, hexstr, pos); if(i >= 10) { switch(i) { case 10: hexchar = 'A'; break; case 11: hexchar = 'B'; break; case 12: hexchar = 'C'; break; case 13: hexchar = 'D'; break; case 14: hexchar = 'E'; break; case 15: hexchar = 'F'; break; } } else { hexchar = '0' + i; } hexstr[new_position++] = hexchar; hexstr[new_position] = '\0'; } return new_position; } /* * Function to convert a given binary number to * its decimal equivalent. */ int binary_to_decimal(int num) { int rem, base = 1, decimal_number = 0; while( num > 0) { rem = num % 10; if((rem == 0) || (rem == 1)) { decimal_number = decimal_number + rem * base; num = num / 10 ; base = base * 2; } else { return -1; // Invalid binary number } } return decimal_number; } /* * Function to convert a given decimal number in to * its octal equivalent. */ int decimal_to_octal(int number) { int octal_number = 0, rem, base = 1; while(number > 0) { rem = number % 8; octal_number = octal_number + rem * base; base = base * 10; number = number / 8; } return octal_number; } void main() { int binary_numer, decimal_number, octal_number; char hexstr = "0"; printf("Enter a binary number: "); scanf("%d", &binary_numer); printf("Given Binary number is: %d\n", binary_numer); decimal_number = binary_to_decimal(binary_numer); if(decimal_number == -1) { printf("\nInvalid binary number. Try again."); return; } printf("Its Decimal equivalent is: %d", decimal_number); octal_number = decimal_to_octal(decimal_number); printf("\nIts octal equivalent is: %d", octal_number); decimal_to_hex(decimal_number, hexstr, 0); printf("\nIts Hexa Decimal equivalent is: %s", hexstr); }

### Sample Output 