Come convertire multipiattaforma char * in long long (64 bit)?
-
29-10-2019 - |
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.
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);