Sven Rautenberg: Zahl formatieren (aus 1 mach 01)

Beitrag lesen

Moin!

Und was war mit der Oktaldarstellung?
was soll damit sein?

07 in oktal ist 7 und 020 in oktal ist schlichtweg 20

Ganz so einfach ist die Sache nicht.

decoct(), dechex(), hexdec() und wie sie alle heissen, stellen aus genannten gründen alle keine führende null bereit - der wert der zahl ändert sich dadurch nicht, wo sollte also die informationen über die führende null gespeichert werden?

Es gibt einen entscheidenden Unterschied zwischen der Zahldarstellung zur Programmlaufzeit und der Zahldarstellung im Quelltext.

Zur Laufzeit werden alle Zahlen intern im Speicher irgendwie dargestellt - wie genau, interessiert nicht. Werden Zahlen ausgegeben, wird üblicherweise die Darstellung im Dezimalsystem verwendet (außer bei Anwendung von Funktionen wie decoct() etc.), werden in Strings enthaltene Zahlen zu Zahlen gewandelt, gilt das ebenso.

Stehen Zahlen jedoch im Quelltext, ist der Parser dafür verantwortlich, diese Zahlen in irgendeiner Form in die interne Repräsentation zu wandeln. Auch hier wird standardmäßig das Dezimalsystem verwendet, aber durch Wahl entsprechender Präfixe sind eben auch andere Zahlsysteme möglich.

echo 020; // gibt 16 aus.  
echo 0xFF; // gibt 255 aus.  
echo 123; // gibt 123 aus.  

Diese alternativen Zahlensystem lassen sich somit sehr effektiv nutzen, wenn man eine schöne Quelltextdarstellung haben will. Beispielsweise läßt sich die Angabe der Farbe bei den Bildfunktionen (z.B. imagesetpixel()) direkt als hexadezimaler sechsstelliger Wert angeben, gerade so, wie man es auch aus HTML gewohnt ist, und braucht sich (zumindest bei Truecolor-Bildern) nicht mit der Funktion imagecolorallocate() herumschlagen.

- Sven Rautenberg

--
"Love your nation - respect the others."