Martin F.: base_convert() rechnet falsch mit großen Zahlen

Beitrag lesen

Hallo,
zur Vorgeschichte: Ich möchte 2 32-Bit-Werte (voraussichtlich kommt noch ein weiterer Wert [Prüfsumme] hinzu) in möglichst kurzer Form speichern, das ganze soll aber auf Buchstaben und Zahlen beschränkt sein. Dafür möchte ich base_convert() benutzen, das gibt mir allerdings nach der Rückumwandlung nicht den Ursprungswert zurück.

Zum Testen habe ich jetzt mal für beide Werte 0xffffffff genommen (die Werte werden in meinem Skript aneinandergefügt, ggf. vorher mit Nullen links auf 8 Zeichen verlängert).

<?php
$base16 = str_repeat('f', 16);
$base36 = base_convert($base16, 16, 36);
$base16_2 = base_convert($base36, 36, 16);
var_dump($base16, $base36, $base16_2);
?>

Die Ausgabe obigen Skripts:
string(16) "ffffffffffffffff"
string(13) "3w5e11264sg0g"
string(17) "10000000000000000"

Der Wert nach der Rückumwandlung ist also exakt 1 zu hoch. Getestet habe ich das mit PHP 4.3.2 unter Linux und 4.3.11 unter Windows. Ist das ein Bug, mache ich etwas falsch oder ist base_convert für so große Werte schlicht ungeeignet?

Es grüßt
Martin F.