Comment croiser la conversion de la conversion du char * en longue longue (64 bits)?
-
29-10-2019 - |
Question
Comment puis-je convertir une chaîne de char * en entier long (64 bits)?
J'utilise les compilateurs MSVC et GCC et mes plates-formes sont Windows, Linux et Mac OS.
Merci.
La solution
Utilisation strtoull
pour non signé longtemps ou strtoll
pour signé longtemps. Sur n'importe quel Unix (Linux, Mac OS X), tapez man strtoull
ou man strtoll
pour obtenir sa description. Étant donné que les deux font partie de la norme C99, ils devraient être disponibles sur tout système qui prend en charge C. les pages Linux Man avoir des exemples sur la façon de les utiliser.
Autres conseils
Pour C ++ avec un compilateur qui prend en charge long long int
, J'utiliserais un std::istringstream
objet. Par exemple:
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
est probablement le plus simple (en code). Voir http://www.boost.org/doc/libs/1_47_0/libs/conversion/lexical_cast.htm pour plus d'informations. Utilisez alternativement un stringstream
Pour analyser la valeur numérique.
#include <stdlib.h>
char serial[1000];
long long var = _atoi64(serial);