Click here to Skip to main content
15,887,214 members
Articles / Programming Languages / C
Article

Conversion between Binary, Octal, Decimal, & Hexadecimal number systems

Rate me:
Please Sign up or sign in to vote.
1.16/5 (12 votes)
4 Jun 20072 min read 88.9K   1.2K   17   9
Conversion between Binary, Octal, Decimal, & Hexadecimal number systems. C code for download.

Introduction

Have you ever needed to convert between various number systems. There is no library (built-in) function in C for displaying a number in binary or parsing (reading) an octal number into it's integer equivalent. In this article I am going to introduce some functions I have written for use with this purpose.

Background

Many time I needed to show a number in binary or parse a binary string into it's equivalent string. Also for other number system I found no standard generalized way. So, I decided to write down my own codes. These are simple in fact. But can surely save time when you don't want to waste time in just writing down the code for displaying a number in binary (or in other formats).

Using the code

I have written 8 functions for parsing and formatting from and into all the number system representations into others. 4 for parsing 4 number system string representations into their integer equivalents and 4 for formatting strings from integer equivalents. Any combinations can be used for conversion between string representation of one number system to another.

The parsing functions are:-

int parseBin(char* bin);

int parseOct(char* oct);

int parseDec(char* dec);

int parseHex(char* hex);

The formatting functions are:-

char* formatBin(int bin);

char* formatOct(int oct);

char* formatDec(int dec);

char* formatHex(int hex);

I am discussing two of them here in detail.

int parseBin(char* bin) parses binary string bin into it's integer equivalent. To parse the binary number string "1001" into it's equivalent integer-

C++
printf("%d\n", parseBin("1001"); 

char* formatHex(int hex) formats integer hex into it's hexadecimal string representation. To fromat the number 255 into it's hexadecimal string representation-

C++
printf("%s\n", formatHex(255)); 

Any combination of the functions can be used for possible convertions between string representation of various number systems.

C++
printf(formatBin(parseHex("3f8")); 

formatHex() gives output in uppercase. To have the output in lower case there is another function; formatHexL().

Points of Interest

I have made an application that can convert between any number system in the command line. The source is included in the zip. The application is named conv_type.

Example: conv_type 0 3 1111

Output: FF

Discussion: conv_type input_system output_system number

0 = binary

1 = octal

2 = decimal

3 = hexadecimal

History

This article is in it's first edition.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Bangladesh Bangladesh
Linux+Windows programmer.

Mainly focused on networking and web development.

Comments and Discussions

 
GeneralMy vote of 1 Pin
Andrew Muliar18-Feb-09 19:24
Andrew Muliar18-Feb-09 19:24 
GeneralArticle should be removed. Pin
fresi15-Feb-09 18:58
fresi15-Feb-09 18:58 
GeneralRe: Article should be removed. Pin
Andrew Muliar18-Feb-09 19:23
Andrew Muliar18-Feb-09 19:23 
GeneralIncorrect Pin
David Crow4-Aug-08 16:39
David Crow4-Aug-08 16:39 
Generalmalloc Pin
Mihai Nita4-Jun-07 9:55
Mihai Nita4-Jun-07 9:55 
AnswerRe: malloc Pin
asadbd5-Jun-07 6:45
asadbd5-Jun-07 6:45 
GeneralAll but binary is there Pin
Mihai Nita4-Jun-07 9:53
Mihai Nita4-Jun-07 9:53 
GeneralRe: All but binary is there Pin
Mihai Nita4-Jun-07 10:01
Mihai Nita4-Jun-07 10:01 
GeneralRe: All but binary is there [modified] Pin
asadbd5-Jun-07 4:24
asadbd5-Jun-07 4:24 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.