Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > Conversion from Hexadecimal number into Decimal number

Reply
Thread Tools

Conversion from Hexadecimal number into Decimal number

 
 
dharmdeep@gmail.com
Guest
Posts: n/a
 
      11-13-2006
Hi friends,
I need a sample code in C which will convert a Hexadecimal
number into decimal number. I had written a code for that but it was
too long, I need a small code, so request u all to provide me with
small sample code for that.

 
Reply With Quote
 
 
 
 
Ian Collins
Guest
Posts: n/a
 
      11-13-2006
wrote:
> Hi friends,
> I need a sample code in C which will convert a Hexadecimal
> number into decimal number. I had written a code for that but it was
> too long, I need a small code, so request u all to provide me with
> small sample code for that.
>

u is still on holiday.

You show us yours and someone might show you theirs....

--
Ian Collins.
 
Reply With Quote
 
 
 
 
Richard Heathfield
Guest
Posts: n/a
 
      11-13-2006
said:

> Hi friends,
> I need a sample code in C which will convert a Hexadecimal
> number into decimal number.


You ask the impossible. There is no such thing as a hexadecimal number, and
no such thing as a decimal number. Hexadecimal and decimal are merely
representations. The number itself is independent of "base". A dozen apples
is a dozen apples, no matter how many fingers you have, and no matter
whether you write it as 1100, 110, 30, 22, 20, 15, 14, 13, 12, 11, 10, or
C. All that matters is that writer and reader(s) both understand the
representation being used.

What you appear to be asking for is how to convert a given representation
into another representation. That's easy enough to do. Simply build an
integer n from whichever representation you have, and then do this to build
a representation in a given number base:

s = empty string
while n > 0 do
digit = n mod base
add text representation of digit to the end of s
divide n by base, giving n
elihw
if s is empty
s = "0"
else
reverse s in place
fi

--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: normal service will be restored as soon as possible. Please do not
adjust your email clients.
 
Reply With Quote
 
santosh
Guest
Posts: n/a
 
      11-13-2006
Richard Heathfield wrote:
> said:
>
> > Hi friends,
> > I need a sample code in C which will convert a Hexadecimal
> > number into decimal number.

>
> You ask the impossible. There is no such thing as a hexadecimal number, and
> no such thing as a decimal number. Hexadecimal and decimal are merely
> representations. The number itself is independent of "base". A dozen apples
> is a dozen apples, no matter how many fingers you have, and no matter
> whether you write it as 1100, 110, 30, 22, 20, 15, 14, 13, 12, 11, 10, or
> C. All that matters is that writer and reader(s) both understand the
> representation being used.


I would argue that 'dozen' itself is another representation, albiet a
very arbitrary one. I've not studied mathematics beyond junior college,
but let me ask this: Can there be numbers apart from some form of
representation?

 
Reply With Quote
 
loic-dev@gmx.net
Guest
Posts: n/a
 
      11-13-2006
Hello,

> I would argue that 'dozen' itself is another representation, albiet a
> very arbitrary one. I've not studied mathematics beyond junior college,
> but let me ask this: Can there be numbers apart from some form of
> representation?


I don't want to step into abstract mathematical argumentations, but the
short answer to your question is: "yes". See:

http://en.wikipedia.org/wiki/Natural_number

Regards,
Loic.

 
Reply With Quote
 
Richard Heathfield
Guest
Posts: n/a
 
      11-13-2006
santosh said:

> Richard Heathfield wrote:


<snip>

>> A dozen
>> apples is a dozen apples, no matter how many fingers you have, and no
>> matter whether you write it as 1100, 110, 30, 22, 20, 15, 14, 13, 12, 11,
>> 10, or C. All that matters is that writer and reader(s) both understand
>> the representation being used.

>
> I would argue that 'dozen' itself is another representation, albiet a
> very arbitrary one.


Indeed it is. It's "English representation", if you like. Discussing numbers
without representing them in *some* fashion is rather awkward, but consider
the following:

* * * * *
+ + + + +
<>< <>< <>< <>< <><

No matter how you represent the number of asterisks, the number of plus
signs, and the number of fish I just showed, it is nevertheless clear that
there is the same number of each. That sameness, that one-to-one
correspondence, that "matching", is what 'number' is all about.

> I've not studied mathematics beyond junior college,
> but let me ask this: Can there be numbers apart from some form of
> representation?


Very much so, yes - but talking about them can get a bit abstract at times.


--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: normal service will be restored as soon as possible. Please do not
adjust your email clients.
 
Reply With Quote
 
SM Ryan
Guest
Posts: n/a
 
      11-13-2006
wrote:
# Hi friends,
# I need a sample code in C which will convert a Hexadecimal
# number into decimal number. I had written a code for that but it was
# too long, I need a small code, so request u all to provide me with
# small sample code for that.

strtol(string,0,16)

--
SM Ryan http://www.rawbw.com/~wyrmwif/
No pleasure, no rapture, no exquisite sin greater than central air.
 
Reply With Quote
 
Frederick Gotham
Guest
Posts: n/a
 
      11-13-2006
:

> Hi friends,
> I need a sample code in C which will convert a Hexadecimal
> number into decimal number. I had written a code for that but it was
> too long, I need a small code, so request u all to provide me with
> small sample code for that.



Your question is very vague and generic, so I'll give you code which is
rather generic.

A number will be represented by a sequence of digits. What's a digit? Is it
a character? Is it a floating-point number? Is it a pointer? I don't know,
so I'll write generic code.

How will we arrange these digits? Well let's decide that we'll have a null-
terminated array which starts with the Most Significant Digit.

In providing a function which converts from one representation to another,
we need also to receive a look-up table to map a digit value to an actual
digit (and vice-versa). This look-up may come in the form of a function, or
of an array. I think a function might be more convenient. Now, we can write
the function as follows:

(Unchecked, may contain a subtle bug or two.)

#include <assert.h>

void ConvertBetweenRadices(DigitType *const p_arr,
unsigned const from_radix,
unsigned (*const pFrom)(DigitType),
unsigned const to_radix,
DigitType (*const pTo)(unsigned))
{
assert(!!p_arr); assert(!!*p_arr); assert(!!from_radix);
assert(!!pFrom); assert(!!to_radix); assert(!!pTo);

{
long unsigned val = 0;
long unsigned multiplier = 1;

DigitType *p = p_arr;

val += pFrom(*p++);

while (*p) val += pFrom(*p++) * (multiplier*=from_radix);

p = p_arr;
do
{
*p++ = pTo(val % to_radix);
val /= to_radix;
} while (val);

*p = 0;
}}

As you can see, the function assumes the precondition that the buffer is
long enough. It may be used something like the following:

(Again, unchecked.)

#include <assert.h>

typedef char DigitType;

#include "cbr.h" /* Code shown above */

unsigned DecToVal(DigitType const x)
{
assert(x>='0' && x<='9');

return x - '0';
}

DigitType ValToHex(unsigned const x)
{
assert(x<=15);

if (x < 10) return '0' + x;

switch(x)
{
case 10: return 'A';
case 11: return 'B';
case 12: return 'C';
case 13: return 'D';
case 14: return 'E';
case 15: return 'F';
}
}

#include <stdio.h>

int main(void)
{
char buf[24] = "654323";

ConvertBetweenRadices(buf,10,DecToVal,16,ValToHex) ;

puts(buf);

return 0;
}

It was only after having written the code that I realised we* write from
left to right putting the Most Significant Digit first, rather than the
Least Significant Digit. Ah well.

*we : except for our Arabic particpants of course!

--

Frederick Gotham
 
Reply With Quote
 
Richard Bos
Guest
Posts: n/a
 
      11-13-2006
SM Ryan <> wrote:

> wrote:
> # I need a sample code in C which will convert a Hexadecimal
> # number into decimal number. I had written a code for that but it was
> # too long, I need a small code, so request u all to provide me with
> # small sample code for that.

# error This is not a quoting character suitable for Usenet.
> strtol(string,0,16)


That's a function that will turn the hexadecimal text representation of
a number into an actual number, in binary. To turn _that_ into a decimal
number, you need another function which is equally easily found in any
handbook on C.

Richard
 
Reply With Quote
 
David T. Ashley
Guest
Posts: n/a
 
      11-13-2006
<> wrote in message
news: ups.com...
> Hi friends,
> I need a sample code in C which will convert a Hexadecimal
> number into decimal number. I had written a code for that but it was
> too long, I need a small code, so request u all to provide me with
> small sample code for that.


Although they're a bit pricey, I would recommend you buy Knuth's classic
3-volume work "The Art of Computer Programming". Knuth covers all the basic
integer algorithms there, including radix conversion.

The other poster (who included the C-code) appears at first glance to have
simply provided you the standard algorithm. Very nice of him, but a waste
of his time.

Dave.



 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
convert decimal to hexadecimal number sweeet_addiction16@yahoo.com C Programming 6 09-03-2007 11:40 PM
convert decimal to hexadecimal number sweeet_addiction16@yahoo.com C Programming 6 09-02-2007 06:45 PM
Decimal to Packed Decimal Conversion in C++ Ven C++ 3 08-01-2006 03:56 PM
convert decimal number in a hexadecimal number ? muss C Programming 13 03-27-2006 08:14 AM
Hexadecimal To Decimal Conversion (Via Char Array) A_StClaire_@hotmail.com C++ 2 08-13-2005 01:44 AM



Advertisments