Signatur
Beschreibung
gmp_strval() konvertiert eine GMP-Zahl (GMP-Objekt, Integer oder numerischer String) in eine Zeichenkette. Standardmäßig wird die Dezimaldarstellung (Basis 10) erzeugt, über den zweiten Parameter lässt sich aber jede Basis zwischen 2 und 62 wählen – damit sind Binär-, Oktal-, Hexadezimal- und viele weitere Zahlendarstellungen möglich.
Negative Basen (−2 bis −36) führen dazu, dass die Ziffern als Großbuchstaben ausgegeben werden, statt als Kleinbuchstaben. Das ist nützlich, wenn man eine für Menschen lesbare Darstellung in einem bestimmten Format benötigt.
Die Funktion ist besonders dann wichtig, wenn ein GMP-Ergebnis für die Ausgabe, die Speicherung in einer Datenbank oder die Übergabe an eine Funktion benötigt wird, die nur gewöhnliche PHP-Strings verarbeitet. Da PHP-Integer auf 64 Bit begrenzt sind, muss man bei sehr großen Zahlen den Umweg über Strings nehmen.
Als Eingabe akzeptiert die Funktion neben GMP-Objekten auch ganze Zahlen und numerische Strings, sodass keine explizite Konvertierung mit gmp_init() notwendig ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $num Pflicht | GMP|int|string | Die zu konvertierende GMP-Zahl als GMP-Objekt, PHP-Integer oder numerischer String. |
|
| $base | int | 10 | Die Basis für die Ausgabe. Erlaubt sind Werte von 2 bis 62 (Kleinbuchstaben für a–z) sowie −2 bis −36 (Großbuchstaben für A–Z). Standard ist 10 (Dezimal). |
Rückgabewert
- zurückgegeben.Beispiele
Dezimal-, Hexadezimal- und Binärdarstellung einer GMP-Zahl
<?php
$zahl = gmp_init('123456789012345678901234567890');
echo gmp_strval($zahl) . "\n"; // Dezimal (Basis 10)
echo gmp_strval($zahl, 16) . "\n"; // Hexadezimal (Basis 16, Kleinbuchstaben)
echo gmp_strval($zahl, 2) . "\n"; // Binär (Basis 2)
echo gmp_strval($zahl, -16) . "\n"; // Hexadezimal (Basis -16, Großbuchstaben)
Ergebnis einer GMP-Berechnung als String ausgeben
<?php
// Sehr große Fakultät berechnen und als Dezimalstring ausgeben
$ergebnis = gmp_init(1);
for ($i = 2; $i <= 30; $i++) {
$ergebnis = gmp_mul($ergebnis, $i);
}
$ausgabe = gmp_strval($ergebnis);
echo "30! = " . $ausgabe . "\n";
echo "Länge: " . strlen($ausgabe) . " Ziffern\n";
Negative GMP-Zahl in verschiedenen Basen
<?php
$neg = gmp_init(-255);
echo gmp_strval($neg, 10) . "\n"; // Dezimal
echo gmp_strval($neg, 16) . "\n"; // Hexadezimal
echo gmp_strval($neg, 2) . "\n"; // Binär
// Wichtig · Fallstricke
Basis-Bereich beachten: Wird eine Basis außerhalb des erlaubten Bereichs (2–62 bzw. −2 bis −36) übergeben, erzeugt PHP eine Warnung und gibt false zurück.
GMP-Erweiterung erforderlich: Die gmp-Erweiterung muss in der PHP-Installation aktiviert sein (--with-gmp beim Kompilieren bzw. extension=gmp in der php.ini). Seit PHP 7.2 ist die Erweiterung standardmäßig gebündelt.
Basis 62: Bei Basis 62 werden die Ziffern 0–9, dann a–z (10–35) und schließlich A–Z (36–61) verwendet – negative Basen mit Großbuchstaben sind hier nicht anwendbar.