435,081 Members | 2,118 Online + Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,081 IT Pros & Developers. It's quick & easy.

convert hex string to decimal

 P: n/a 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. Nov 14 '05 #1
3 Replies

 P: n/a Gospill wrote: 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 #include 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) Nov 14 '05 #2

 P: n/a On Sun, 27 Mar 2005 16:15:57 +0800, "Gospill" wrote: 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 willget 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[i] & 0xf0U) >> 4; sum = sum*16 + temp; temp = (hex[i] & 0xofU); sum = sum*16 + temp; } return sum; } <> Nov 14 '05 #3

 P: n/a On Sun, 27 Mar 2005 16:15:57 +0800, Gospill wrote: 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 #include 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 Nov 14 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion. 