2013-12-22 3 views
0

Я изучаю C, только что начатый сегодня, и я исхожу из знания немного Python и немного Javascript, и я хочу знать, как получить базу int строка, например, в JavaScript, вы можете сделать это:parseInt() или int эквивалент для C

parseInt("myString", 36); 

, что возвращение будет 1799765255212

в Python это будет так:

int("myString", 36) 

что бы также вернуться 1799765255212

Есть ли эквивалент C? Если нет, как бы я его создал?

ответ

2
#inclucde <stdlib.h> 

long long val = strtoll("myString", NULL, 36); 
+0

'strtoll' добавлено с C99. – BLUEPIXY

0

Вы можете использовать strtoll, который принимает дополнительную базу для преобразования числа в base36, как в Python int сделали бы

long long myint1 = std::strtoll("myString", NULL ,36); 

кое-что отметить,

Python Целые не limitted к Предел жесткости C/C++. В соответствии со стандартом размер int составляет максимально 4 байта

std::stoi, std::stol, std::stoll В отличие от atoi принимает необязательную базу для принятия строк в произвольной базе.

Так что рассмотрите вышеуказанные две точки, std::strtoll работает лучше всего для вашего конкретного случая.

Образец Источник

#include <iostream> 
#include <string> 

int main() 
{ 
    std::string str1 = "myString"; 
    long long myint1 = std::strtoll(str1.c_str(),0,36); 
    std::cout << "std::strtoll(\"" << str1 << "\") is " << myint1 << '\n'; 
} 

Выходной

std::strtoll("myString") is 1799765255212 

Примечаниеstrtoll был добавлен в стандарт на C99 или C++ 11. В настоящее время, не все компиляторы C++ 11 совместимый

0

Я хотел бы использовать strtoll как:

#include <stdlib.h> 

long long value; 
value = strtoll("myString", NULL, 36); 
printf("value is %lld.\n", value); 
Смежные вопросы