Here is one of my tools that accomplishes what you want. It will
convert to/from any base 2-16.
i.e.
$ baseconv 255 16 (decimal 255 to hex)
255 in base 16 is: ff
$ baseconv 255 2 (decimal 10 255 to binary)
255 in base 2 is: 1111 1111
$ baseconv 0x255 10 (hex to decimal)
0x255 in base 10 is: 597
$ baseconv /13 10 (octal to decimal)
/13 in base 10 is: 11
To use cut/paste, compile, enjoy.
Command line rules!
John Gorman
---[ BEGIN CUT ]----------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
/********************************************************************
*
* Function: baseconv
*
* Author: John Gorman (JHGorman@yahoo.com)
*
* Created: 7/23/1998
*
* Description: This program will accept as input 2 values
* the first value will be a number (base-10)
* the second number will be a base in which to
* display the first value
*
* Input: int number (base-10)
* int base (2-16)
*
* Output: string representing the base-10 value in the
* base requested in input value 2
*
* Updates: Oct 23, 1998, John Gorman
* -- Added the ability to accept an octal number
*
*******************************************************************
*/
char* baseconv(unsigned long num, int base)
{
static char retbuf[100];
char *p;
int iCnt=0;
if (base < 2 || base > 16)
{
return NULL;
}
p = &retbuf[sizeof(retbuf)-1];
*p = '\0';
do
{
*--p = "0123456789abcdef"[num % base];
num /= base;
if (base == 2)
{
iCnt++;
if ( (iCnt %4) == 0)
{
*--p = ' ';
}
}
}
while(num != 0);
return p;
}
void main(int argc, char *argv[])
{
int number;
int base;
unsigned long lNumber;
char *result;
char *endptr;
if (argc == 3)
{
base = atoi(argv[2]);
if (argv[1][0] == '0' && argv[1][1] == 'x')
{
number = lNumber = strtoul(argv[1], &endptr, 16);
}
else if (argv[1][0] == '/')
{
number = lNumber = strtoul(argv[1]+1, &endptr,8);
}
else
{
number = lNumber = strtoul(argv[1], &endptr,10);
/*number = atoi(argv[1]);*/
}
}
else
{
printf("\nusage: %s number base(2-16)\n", argv[0]);
printf(" where number is either a base 10 number, OR\n");
printf(" a base 16 number (i.e. 0xf1), OR\n");
printf(" a base 8 number (i.e. /32)\n\n");
exit(-1);
}
result = baseconv(lNumber, base);
printf("%s in base %d is: %s\n", argv[1], base, result);
return;
}
---[ END CUT ]----------------------------------------------------
-----Original Message-----
From: Lucas Vogel [
mailto:lvogel@exponent.com]
Sent: Tuesday, February 06, 2001 7:04 PM
To: '
plug-discuss@lists.plug.phoenix.az.us'
Subject: looking for a program
I'm looking for a program that will take either a decimal, hex or octal
input and give me its decimal, hex or octal output. Can anyone tell me what
I'm looking for?
Lucas "I Spy" Vogel
________________________________________________
See
http://PLUG.phoenix.az.us/navigator-mail.shtml if your mail doesn't post
to the list quickly and you use Netscape to write mail.
Plug-discuss mailing list -
Plug-discuss@lists.PLUG.phoenix.az.us
http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss