Since it’s needed for URL Shorteners, and that’s what I’m writing a tutorial about, here’s a number converter from decimal, to whatever base you need (if you supply a base array long enough). Written in PHP.

**Update (2011-07-27):**

Changed method to static and added an exception.

/** * Class with static methods for converting numbers from decimal to a given base number system * */ class NumberConverter { /** * Array to be used for conversion */ private static $base = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+="; /** * Get's the $number character from $base array * * @param number - the position of the character needed * @return Returns a character from $base for a given $number */ private static function getCharacter($number) { return self::$base{$number}; } /** * Converts a decimal number to a given base * * @param number - Number to be converted * @param toBase - Number base to be converted to * @throws Exception */ public static function fromDecimalToBase($number, $toBase){ // Check if the base is greater then the max possible base if ($toBase > strlen(self::$base)) { throw new Exception('Base too big.'); } // Convert number to integer (better safe than sorry) $number = intval($number); // Set a flag if the number is negative, do a positive conversion then just add the minus sign $negative = false; if ($number <= 0) { $negative = true; $number = $number * -1; } $converted = ""; while ($number != 0) { // Get a number in the new base $modulus = $number % $toBase; // Get the number representation in that base $converted = self::getCharacter($modulus) . $converted; // Remove the extracted number and continue until the number is 0 $number = intval(($number - $modulus) / $toBase); } // Add the minus sign if it was negative if ($negative) { $converted = "-" . $converted; } return $converted; } }

[…] we need a number converter (more a mapping) I posted a few weeks […]

[…] we need a number converter (more a mapping) I posted a few weeks […]