Wie kann man char * plattformübergreifend in long long (64-Bit) konvertieren?
-
29-10-2019 - |
Frage
Wie kann ich eine char * -String in eine lange lange (64-Bit) Ganzzahl konvertieren?
Ich verwende MSVC- und GCC-Compiler und meine Plattformen sind Windows, Linux und MAC OS.
Danke.
Lösung
Verwenden Sie strtoull
für vorzeichenlose lange lange oder strtoll
für vorzeichenlose lange lange.Geben Sie unter Unix (Linux, Mac OS X) man strtoull
oder man strtoll
ein, um die Beschreibung zu erhalten.Da beide Teil des C99-Standards sind, sollten sie auf jedem System verfügbar sein, das C unterstützt. Die Linux-Manpages auch Beispiele für deren Verwendung haben .
Andere Tipps
Für C ++ mit einem Compiler, der long long int
unterstützt, würde ich ein std::istringstream
-Objekt verwenden.Zum Beispiel:
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
ist wahrscheinlich der einfachste (im Code).Siehe http://www.boost.org/doc/libs/1_47_0 / libs / convert / lexical_cast.htm für weitere Informationen.Verwenden Sie alternativ einen stringstream
, um den numerischen Wert zu analysieren.
#include <stdlib.h>
char serial[1000];
long long var = _atoi64(serial);