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

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.

  1. echo $begrüßung;

    Warum base_convert() "falsch" rechnet steht auf der englischsprachigen Handbuchseite. Auf der deutschen fehlt der Hinweis.

    echo "$verabschiedung $name";

    1. Moin,

      Warum base_convert() "falsch" rechnet steht auf der englischsprachigen Handbuchseite. Auf der deutschen fehlt der Hinweis.

      hach, meistens lese ich bei Problemen auch die englische Seite, aber vorhin hab ich nicht dran gedacht. Danke :o) Ich werd dann wohl base35 nehmen mit einem Trennzeichen.

      Schönes Wochenende
       – Martin