dechex()
Die PHP-Funktion dechex() konvertiert eine Dezimalzahl in eine hexadezimale Zeichenkette. Hier erfahren Sie Syntax und Verwendung.
Die PHP-Funktion dechex() konvertiert eine dezimale (Basis-10) Ganzzahl in ihre hexadezimale (Basis-16) string-Darstellung. Hexadezimal ist die Notation hinter CSS-Farben (#ff0000), Speicheradressen, Byte-Dumps und vielen Datei- und Netzwerkformaten – daher ist dechex() die erste Wahl, wenn Sie eine Zahl in Basis 16 darstellen müssen.
Dieses Kapitel behandelt die Syntax der Funktion, den Umgang mit negativen Zahlen und Fließkommazahlen sowie die gängigen Einsatzmöglichkeiten in der Praxis.
Syntax
dechex(int $num): string$num— die zu konvertierende dezimale Ganzzahl. Sie wird als 64-Bit-Ganzzahl interpretiert, sodass der größte exakt darstellbare WertPHP_INT_MAX(9223372036854775807) ist.- Rückgabewert — eine hexadezimale string in Kleinbuchstaben (Ziffern
0-9und Buchstabena-f). Das Ergebnis hat kein0x-Präfix und keine führenden Nullen.
Einfaches Beispiel
255 ist der größte Wert, der in ein einzelnes Byte passt, sodass er zu ff – den zwei höchsten Hex-Ziffern – konvertiert wird. Einige weitere Konvertierungen verdeutlichen das Muster:
<?php
echo dechex(0); // 0
echo "\n";
echo dechex(10); // a
echo "\n";
echo dechex(16); // 10
echo "\n";
echo dechex(255); // ff
?>Beachten Sie, dass dechex(16) "10" zurückgibt – das ist „eins-null" in Basis 16 (16 in Dezimal), nicht die Dezimalzahl zehn.
Negative Zahlen und Fließkommazahlen
dechex() funktioniert nur mit Ganzzahlen, lehnt aber andere Eingaben nicht ab – es konvertiert sie zunächst, was überraschend sein kann:
- Fließkommazahlen werden vor der Konvertierung in Richtung null abgeschnitten.
dechex(20.5)wird als20behandelt und gibt14zurück. - Negative Zahlen werden als ihre vorzeichenlose Zweierkomplement-Darstellung interpretiert. Auf einem 64-Bit-System gibt
dechex(-1)ffffffffffffffff(16f-Ziffern) zurück, keinen Wert mit einem Minuszeichen.
<?php
echo dechex(20.5); // 14 (the 20.5 is truncated to 20)
echo "\n";
echo dechex(-1); // ffffffffffffffff on 64-bit PHP
?>Wenn Sie eine vorzeichenbehaftete Hex-Zeichenkette benötigen, behandeln Sie das Vorzeichen selbst: ($n < 0 ? '-' : '') . dechex(abs($n)).
Auffüllen und Formatieren der Ausgabe
Da dechex() führende Nullen entfernt, wird ein einstelliges Byte wie 5 als "5" statt als "05" zurückgegeben. Wenn Sie eine feste Breite benötigen – zum Beispiel beim Aufbau einer CSS-Farbe aus RGB-Komponenten – füllen Sie das Ergebnis auf:
<?php
$r = 5; $g = 200; $b = 16;
$color = sprintf('#%02s%02s%02s', dechex($r), dechex($g), dechex($b));
echo $color; // #05c810
?>Sie können Hex-Werte auch direkt mit sprintf() formatieren, indem Sie die Konvertierung %x (Kleinbuchstaben) oder %X (Großbuchstaben) verwenden, was oft übersichtlicher ist, wenn Sie auch Auffüllung benötigen:
<?php
echo sprintf('%02X', 255); // FF
?>Die Umkehrfunktion: hexdec()
Um den umgekehrten Weg zu gehen – von einer hexadezimalen Zeichenkette zurück zu einer dezimalen Ganzzahl – verwenden Sie hexdec(). Die beiden Funktionen sind Umkehroperationen zueinander:
<?php
echo hexdec(dechex(255)); // 255
?>Wann dechex() verwendet werden sollte
- Erzeugen oder Überprüfen von CSS-/Hex-Farbcodes aus numerischen RGB-Werten.
- Erstellen von Hex-Dumps von Binärdaten zusammen mit
bin2hex(). - Anzeigen von Bitmasken- oder Flag-Werten in einer kompakten, lesbaren Form.
- Protokollieren von Speicher- oder Offset-Werten in der von Entwicklern erwarteten Basis.
Für andere Basen bietet PHP passende Hilfsfunktionen: decbin() für binär und decoct() für oktal, mit bindec() und octdec() zur Rückkonvertierung.
Fazit
dechex() wandelt eine dezimale Ganzzahl in eine hexadezimale Zeichenkette in Kleinbuchstaben um, ohne 0x-Präfix und ohne führende Nullen. Behalten Sie die Besonderheiten im Blick – Fließkommazahlen werden abgeschnitten, negative Zahlen werden vorzeichenlos – und greifen Sie auf sprintf('%02x', ...) zurück, wenn Sie Auffüllung benötigen. Kombinieren Sie die Funktion mit hexdec(), wenn Sie zwischen beiden Basen hin- und herwechseln müssen.