2 Stimmen

IPhone int-Analyse

Ich arbeite an einer iPhone-App. Ich möchte eine Reihe von Zahlen aus einem String analysieren. Allerdings verhält sich intValue wirklich sehr seltsam.

Ich habe einen String mit dem Wert 1304287200000.

Dann platziere ich den intValue davon in ein NSInteger, und siehe da, mein Integer erhält aus irgendeinem Grund den Wert 2147483647 zugewiesen.

Was ist da los?

4voto

PeyloW Punkte 36534

Der Datentyp int ist ein 32-Bit numerischer Wert mit einem Bereich von etwa ±2 Milliarden. 1304287200000 liegt deutlich außerhalb dieses Bereichs.

Sie müssen int durch long long ersetzen, das ein 64-Bit-Typ ist und Ihren Anforderungen entspricht. Ein menschenlesbarerer und expliziterer Name für den 64-Bit-Typ ist int64_t.

4voto

zoul Punkte 99332

Was du zurückbekommst, ist INT32_MAX, weil der geparste Wert den int Typen überläuft. Dies wird in der NSString Dokumentation erklärt. Versuche stattdessen longLongValue, LLONG_MAX sollte groß genug sein.

2voto

int ist 32-Bit, sodass der maximale Wert, den es aufnehmen kann, 2.147.483.647 ist. Versuchen Sie stattdessen longLongValue.

1voto

nidhin Punkte 6333

Ihre Zahl überschreitet die Integer-Grenzen

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