. * * * ************************************************************************ * * Uplink/Numerics.class.php * * P10 numeric functions * */ class Numerics { private static $base64chars = array( 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P', 'Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f', 'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v', 'w','x','y','z','0','1','2','3','4','5','6','7','8','9','[',']' ); private static $base64charsLength = 64; public static function intToNum($int, $length) { $numeric = ""; for($pos = $length-1; $pos >= 0; $pos--) { //current position represents floor($int / ($base64charsLength ^ $pos)) $base = 1; for($i = 0; $i < $pos; $i++) { $base = $base * self::$base64charsLength; } $posValue = floor($int / $base); $int -= $posValue * $base; //get the char representing $posValue $posChar = self::$base64chars[$posValue]; $numeric .= $posChar; } return $numeric; } public static function numToInt($numeric) { $base = 1; $int = 0; for($pos = strlen($numeric)-1; $pos >= 0; $pos--) { $posValue = array_search($numeric[$pos], self::$base64chars); $int += ($posValue * $base); $base = $base * self::$base64charsLength; } return $int; } } ?>