Dezimale Zahlen in ein größeres Zahlensystem umwandeln

PHP  (06.06.2010 20:59) Mit den beiden Funktionen kann man Zahlen in ein größeres Zahlensystem umwandeln. So wird aus 999 beispielsweise C7.
Dieses Verfahren kennt man zB von Youtube (http://www.youtube.com/watch?v=XIQ2lXlgAMk) um lange IDs kürzer zu machen.

Quellcode (ausblenden | aufklappen)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
 
      function dec2char($dez) {
         $dez = (int)$dez;
         $char = "";
 
         $chars = "0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";
         $num_chars = strlen($chars);
 
         if(!($dez<1)) {
            while($dez>0) {
               $rest = $dez%$num_chars;
               $temp = $chars{$rest};
               if($temp=="0" && $char!="") $temp="";
               $char = $temp.$char;
               $dez /= $num_chars;
            }
         } else {
            return substr($chars, 0, 1);
         }
 
         return $char;
      }
 
      function char2dec($char) {
         $chars = "0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";
         $numchars = strlen($chars);
         $dez=0;
         $num = strlen(trim($char))-1;
         while($num>=0) {
            $temp = strpos($chars, $char{((strlen($char)-1)-$num)});
            $dez += ($temp*pow($numchars,$num));
            $num--;
         }
         return $dez;
      }
 
?>