将字符串中的十六进制值读取为十进制长度

时间:2012-03-05 12:21:51

标签: c hex type-conversion

我有一个包含十六进制值的字符串:

"29E94B25"

我想使用10的基数将此十六进制字符串转换为无符号长整数。我想创建一个值为:

的unsigned long
703154981

如何进行此类型转换?

4 个答案:

答案 0 :(得分:6)

您可以使用strtoul

将此字符串读入无符号长整数
unsigned long n = strtoul("29E94B25", NULL, 16);

然后,您可以使用printf在基础10中打印它。

没有unsigned long以及2以外的基础。

答案 1 :(得分:2)

您需要

strtoul

unsigned long x;
x = strtoul("29E94B25", 0, 16);

答案 2 :(得分:1)

可以使用sscanf进行任何类型的转换。

    #include<stdio.h>
    main(){
      char a[] = "29E94B25";
      unsigned long int b;
      sscanf(a,"%X",&b);
      printf("%ld",b);
    }

答案 3 :(得分:0)

C#

String hexNumber = "000001ae";
int i = Int32.Parse(hexNumber, NumberStyles.HexNumber);
MessageBox.Show(i); (or Console.Write(i))

C:

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;
}