преобразование массива символов (строка c) в _int64 в C - PullRequest
2 голосов
/ 31 октября 2011

Я пытался использовать эту функцию для преобразования строки в _int64, но она не работала:

_int64 lKey = _atoi64("a1234");

Значение lKey всегда равно нулю и не работает, за исключением того, что строка состоит только из цифр вроде "1234"

Я читаю решения с использованием строкового потока C ++, но хочу написать свое приложение на чистом C

Ответы [ 2 ]

3 голосов
/ 31 октября 2011

Функция действительно работает.Поскольку документация гласит :

Каждая функция возвращает значение __int64, полученное путем интерпретации входных символов как числа.Возвращаемое значение равно 0 для _atoi64, если вход не может быть преобразован в значение этого типа.

Поэтому вы должны убедиться, что передана правильная строка.В противном случае возвращаемое значение всегда будет равно нулю."a1234" не является правильной строкой с точки зрения этой функции, и почти каждая функция анализа «dump» не сможет ее проанализировать.

2 голосов
/ 31 октября 2011

Если вы считаете, что ваш номер шестнадцатеричный, и C99 в порядке, вы можете попробовать strtoull() вместо:

const unsigned long long value = strtoull(string, NULL, 16);

или с автоматическим определением:

const unsigned long long value = strtoull(string, NULL, 0);
...