Solved

# Conversion Binary <-> Decimal

Posted on 2002-04-12
83,239 Views
Hi
I need two simple functions:

1 - Convert Binary to Decimal and returns this value
2-  Convert Decimal to Binary and returns this value

Thanks
0
Question by:maomorta

LVL 2

Expert Comment

dec to bin:
what I do is make a hex lookup table

0 = "0000"
1 = "0001"
...
f = "1111"

and do an sprintf into a hex string.
int i, char * str...
sprintf(str, "%x", i);

then each hex digit is replaced with the
lookup value. Kill leading zeros if you want too...

bin to dec is easier
place the bits into an unsigned int  using shift operator
<< ...

0

LVL 2

Accepted Solution

jonnin earned 100 total points
come to think of it, you can shift the bits out instead of the sprintf thing...
0

LVL 6

Expert Comment

// Binary to Decimal
http://www.c-for-dummies.com/lessons/bonus/13/

// Decimal to Binary
http://mathforum.com/dr.math/problems/kaufman.10.26.99.html

I will try to make an example.
0

LVL 6

Expert Comment

// Cheap example.  Microsoft compiler
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

long     BinaryToDecimal(const char * pstrBinary)
{
int     intLoop=0;
long     lngReturn=0L;
long     lngMultip=1L;
for (intLoop=0; intLoop < (int)strlen(pstrBinary); intLoop++)
{
if ('1' == pstrBinary[intLoop])
{
lngReturn += lngMultip;
}
lngMultip *= 2;
}
return     lngReturn;
}

char     *     DecimalToBinary(long lngDecimal)
{
static     char strReturn[128]={0};
_ltoa(lngDecimal, strReturn, 2);
return strReturn;
}

int main(void)
{
long          lngDecimal     =     7;
char     *     pstrBinary     =     "111";

printf("B2D=%ld\nD2B=%s\n",     BinaryToDecimal(pstrBinary),     DecimalToBinary(lngDecimal));
}
0

Author Comment

Hi jonnin,
As you sugested I wrote this program but I have a segmentation fault, and I can not understand where the problem is.

Can you give more details about
"bin to dec is easier
place the bits into an unsigned int  using shift operator
<< ..."

#include <stdio.h>
#include <string.h>

void int2bin(long num);

int main()
{
int2bin(12343);
}

void int2bin(long num)
{
char *hex;
char bin[50]="";
sprintf(hex, "%X", num);
while (*hex) {
switch (*hex)
{
case '0':
strcat(bin, "0000");
break;
case '1':
strcat(bin, "0001");
break;
case '2':
strcat(bin, "0010");
break;
case '3':
strcat(bin, "0011");
break;
case '4':
strcat(bin, "0100");
break;
case '5':
strcat(bin, "0101");
break;
case '6':
strcat(bin, "0110");
break;
case '7':
strcat(bin, "0111");
break;
case '8':
strcat(bin, "1000");
break;
case '9':
strcat(bin, "1001");
break;
case 'A':
strcat(bin, "1010");
break;
case 'B':
strcat(bin, "1011");
break;
case 'C':
strcat(bin, "1100");
break;
case 'D':
strcat(bin, "1101");
break;
case 'E':
strcat(bin, "1110");
break;
case 'F':
strcat(bin, "1111");
break;
}

*hex++;
}

printf("%s\n", bin);

}
0

LVL 1

Expert Comment

Make these changes...

char * hex; ----> to
char * hex = (char *)(malloc(sizeof(long)*2*sizeof(char)));
Also, add this as a better programming practice.

*hex++;   -----> to
hex++; //Just hex++

At the end of the code:
0

LVL 18

Expert Comment

char *int2bin(long lno,char *buf)
{
int c = 32;

buf[32]=0;
do
{

buf[--c] = '0' + (lno & 1);
lno = lno >> 1;
}
while (c);

return buf;

}

long bin2int(char *buf)
{
long val=0;
int c=0;

while (buf[c])
{
val = (val << 1) | (buf[c++]-'0');
}

return val;

}

'example

printf("\n%s",int2bin(1024,test));
printf("\n%li",bin2int(test));

0

## Featured Post

### Suggested Solutions

I annotated my article on ransomware somewhat extensively, but I keep adding new references and wanted to put a link to the reference library.  Despite all the reference tools I have on hand, it was not easy to find a way to do this easily. I finallâ€¦
I previously wrote an article addressing the use of UBCD4WIN and SARDU. All are great, but I have always been an advocate of SARDU. Recently it was suggested that I go back and take a look at Easy2Boot in comparison.
The goal of this video is to provide viewers with basic examples to understand how to create, access, and change arrays in the C programming language.
The goal of this video is to provide viewers with basic examples to understand and use conditional statements in the C programming language.