Pergunta

Como posso converter uma string char * em um inteiro longo (64 bits)?

Eu uso compiladores MSVC e GCC e minhas plataformas são Windows, Linux e MAC OS.

Obrigado.

Foi útil?

Solução

Use strtoull para long long sem sinal ou strtoll para long long long assinado.Em qualquer Unix (Linux, Mac OS X), digite man strtoull ou man strtoll para obter sua descrição.Uma vez que ambos são parte do padrão C99, eles devem estar disponíveis em qualquer sistema que suporte C. As páginas de manual do Linux também tenha exemplos de como usá-los .

Outras dicas

Para C ++ com um compilador que suporta long long int, eu usaria um objeto std::istringstream.Por exemplo:

char* number_string;
//...code that initializes number_string

std::istringstream input_stream(number_string);
long long int i64_bit_type;
input_stream >> i64_bit_type;
long long int i;

if(sscanf(string, "%lld", &i) == 1) { ... }

boost::lexical_cast é provavelmente o mais simples (no código).Consulte http://www.boost.org/doc/libs/1_47_0 / libs / conversion / lexical_cast.htm para mais informações.Como alternativa, use um stringstream para analisar o valor numérico.

 #include <stdlib.h>

 char serial[1000];

 long long var = _atoi64(serial);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top