Cómo la cruz-plataforma de la conversión del char* a long long (64 bits)?
-
29-10-2019 - |
Pregunta
¿Cómo puedo convertir de un char* cadena a long long (64-bit) entero?
Yo uso MSVC y el compilador GCC y mis plataformas Windows, Linux y MAC OS.
Gracias.
Solución
Utilice strtoull
para unsigned long long o strtoll
paraigned long long.En cualquier Unix (Linux, Mac OS X), escriba man strtoull
o man strtoll
para obtener su descripción.Dado que ambos son parte del estándar C99, deberían estar disponibles en cualquier sistema que admita C. Las páginas de manual de Linux también tener ejemplos sobre cómo usarlos .
Otros consejos
Para C ++ con un compilador que admita long long int
, usaría un objeto std::istringstream
.Por ejemplo:
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
es probablemente el más simple (en el código).Ver http://www.boost.org/doc/libs/1_47_0/libs/conversion/lexical_cast.htm para obtener más información.Alternativamente, el uso de un stringstream
para analizar el valor numérico.
#include <stdlib.h>
char serial[1000];
long long var = _atoi64(serial);