5 Stimmen

Richtige Umwandlung von char * number in int32_t

Ich möchte eine Zahl vom Format char * in die 32-Bit-Ganzzahl int32_t konvertieren, aber strtol() gibt long zurück.

Ich weiß nicht, wie lange mein Gerät läuft. Es könnte 32 oder 64 Bit oder etwas anderes in der Zukunft sein.

Was ist der richtige und kugelsichere Weg, um String in 32-Bit-Integer int32_t konvertieren? Oder um long in int32_t zu konvertieren.

Ist der Vergleich mit den Konstanten _MAX und _MIN die einzige und einfachste Möglichkeit?

0voto

glglgl Punkte 84928
char *buf;
long val;
....
if (1 == sscanf(buf, "%ld", &val) )
{
   // success!
   // now we have the data in a long, can do some boundary checking and then put it in an int32_t.
}
...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X