Чтение шестнадцатеричного значения из строки в десятичный длинный - PullRequest
2 голосов
/ 05 марта 2012

У меня есть строка, которая содержит шестнадцатеричное значение:

"29E94B25"

Я хочу преобразовать эту шестнадцатеричную строку в длинную без знака, используя основание 10. Например, я хочу создать длинную без знака со значениемиз:

703154981

Как я могу сделать это преобразование типов?

Ответы [ 4 ]

6 голосов
/ 05 марта 2012

Вы можете прочитать эту строку в длинную без знака с помощью strtoul:

unsigned long n = strtoul("29E94B25", NULL, 16);

Затем вы можете распечатать его в base-10 с помощью printf.

Нет такой вещи, как unsigned long с базой, отличной от 2.

2 голосов
/ 05 марта 2012

strtoul это то, что вам нужно

unsigned long x;
x = strtoul("29E94B25", 0, 16);
1 голос
/ 05 марта 2012

Можно использовать sscanf для разговоров любого типа.

    #include<stdio.h>
    main(){
      char a[] = "29E94B25";
      unsigned long int b;
      sscanf(a,"%X",&b);
      printf("%ld",b);
    }
0 голосов
/ 05 марта 2012

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...