3 Stimmen

Was macht eine führende Null für einen PHP-Int?

echo(073032097109032116104101032118101114121032109111100101108032111102032097032109111100101114110032109097106111114032103101110110101114097108046);

Im Grunde eine sehr große Nummer. Warum gibt es also 241872 aus? Ich weiß, dass PHP Float-Handler hat. Wenn ich die führende Null entferne, funktioniert es wie erwartet. Was kennzeichnet diese führende Null?

16voto

schnaader Punkte 47961

Wenn Sie eine führende Null verwenden, wird die Nummer von PHP als Oktalzahl interpretiert. Daher ist eine 9 kein gültiger Teil der Nummer und der Parser stoppt dort:

  0730320 (Basis 8)
=  7 * 8^5 + 3 * 8^4 + 3 * 8^2 + 2 * 8^1
=  7 * 32768 + 3 * 4096 + 3 * 64 + 2 * 8 (Basis 10)
=  241872 (Basis 10)

2voto

Mark Baker Punkte 204969

Eine führende Null zeigt einen oktalen Ganzzahlwert an

1voto

CodeCaster Punkte 140110

Handbuch:

Warnung

Wenn in einem oktalen Integer eine ungültige Ziffer angegeben wird (z. B. 8 oder 9), wird der Rest der Zahl ignoriert.

Beispiel #2 Oktal-Seltsamkeit

Also wird Ihre Zahl nach 0730320 abgeschnitten, was 241872 im Dezimalformat entspricht.

-1voto

Frank Punkte 439

010 gibt Ihnen 8 (Oktalzahl)
0x10 gibt Ihnen 16 (Hexadezimalzahl)

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