convert hex string to decimal

G

Gospill

Hi Guru,

If I have string like "0D76" for example, it is actually a 0x0D76 in hex
format.
How can I convert the hex string 0D76 into decimal value ? So that I will
get decimal value 3446

Thanks.
 
M

Martin Ambuhl

Gospill said:
Hi Guru,

If I have string like "0D76" for example, it is actually a 0x0D76 in hex
format.
How can I convert the hex string 0D76 into decimal value ? So that I will
get decimal value 3446

Please check the FAQ and archives before posting.
#include <stdlib.h>
#include <stdio.h>

int main(void)
{
char s[] = "0D76";
unsigned long x;
x = strtoul(s, 0, 16);
printf("The value represented by the string \"%s\" is\n"
"%lu (decimal)\n" "%#lo (octal)\n" "%#lx (hex)\n",
s, x, x, x);
return 0;
}

[output]
The value represented by the string "0D76" is
3446 (decimal)
06566 (octal)
0xd76 (hex)
 
B

Barry Schwarz

Hi Guru,

If I have string like "0D76" for example, it is actually a 0x0D76 in hex

"0D76" is a string. It occupies five char.

0x0D76 is not a string. It occupies at most 2 bytes.

Don't confuse the two and please try not to confuse us by introducing
completely extraneous data. You either want to process the first or
the second. I assume form actually you want to deal with the second.
format.
How can I convert the hex string 0D76 into decimal value ? So that I will
get decimal value 3446

Where is your hex value? Where do you want the result stored?

If your hex value is already in a variable of integer type, then any
member of the printf family will do the trick.

If your hex value is not already in an array of unsigned char, you
need to get it there (memcpy if in memory, fread if in a file, etc).

Once you get it there, you need to process each hex digit (also known
as a nybble) in turn and accumulate the result in an integer of some
type. Assuming CHAR_BIT is 8 on your system, a function like the
following should get you started:

int hex_to_int(unsigned char hex[], int count)
{
int sum = 0;
int i;
int temp;

for (i = 0; i < count; i++)
{
temp = (hex & 0xf0U) >> 4;
sum = sum*16 + temp;
temp = (hex & 0xofU);
sum = sum*16 + temp;
}
return sum;
}


<<Remove the del for email>>
 
C

Chris Croughton

If I have string like "0D76" for example, it is actually a 0x0D76 in hex
format.

I presume you mean that it is currently a character string and you want
it as a binary value?
How can I convert the hex string 0D76 into decimal value ? So that I will
get decimal value 3446

Look up strtol() in your reference book.

#include <stdlib.h>
#include <stdio.h>

int main(void)
{
char string[] = "0D76";
long value = strtol(string, NULL, 16);
printf("value of '%s' is %ld\n", string, value);
return 0;
}

Chris C
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,479
Members
44,899
Latest member
RodneyMcAu

Latest Threads

Top