Domanda

Come posso convertire una stringa char * in un intero lungo (64 bit)?

Utilizzo compilatori MSVC e GCC e le mie piattaforme sono Windows, Linux e MAC OS.

Grazie.

È stato utile?

Soluzione

Utilizza strtoull per unsigned long long o strtoll per signed long long.Su qualsiasi Unix (Linux, Mac OS X), digita man strtoull o man strtoll per ottenere la sua descrizione.Poiché entrambi fanno parte dello standard C99, dovrebbero essere disponibili su qualsiasi sistema che supporti C. Le pagine man di Linux anche avere esempi su come utilizzarli .

Altri suggerimenti

Per C ++ con un compilatore che supporta long long int, utilizzerei un oggetto std::istringstream.Ad esempio:

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 è probabilmente il più semplice (nel codice).Vedi http://www.boost.org/doc/libs/1_47_0 / libs / conversion / lexical_cast.htm per maggiori informazioni.In alternativa, utilizza un stringstream per analizzare il valore numerico.

 #include <stdlib.h>

 char serial[1000];

 long long var = _atoi64(serial);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top