Javascript進制轉換:
http://stackoverflow.com/questions/57803/how-to-convert-decimal-to-hex-in-javascript
Convert a number to a hexadecimal string with:
hexString = yourNumber.toString(16);
and reverse the process with:
yourNumber = parseInt(hexString, 16);
php進制轉換 (2-62):
http://blog.zoeey.org/2010/06/30/short-url-radix-convert/
/* * MoXie ([email protected]) 2010-6-30 17:53:57 * * Copyright © 2008-2010 Zoeey.Org . All rights are reserved. * Code license: Apache License Version 2.0 * http://www.apache.org/licenses/LICENSE-2.0.txt */ error_reporting(E_ALL); /** * 返回一字符串,十進制 number 以 radix 進制的表示。 * @param dec 需要轉換的數字 * @param toRadix 輸出進制。當不在轉換範圍內時,此參數會被設定爲 2,以便及時發現。 * @return 指定輸出進制的數字 */ function dec2Any($dec, $toRadix) { $MIN_RADIX = 2; $MAX_RADIX = 62; $num62 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; if ($toRadix < $MIN_RADIX || $toRadix > $MAX_RADIX) { $toRadix = 2; } if ($toRadix == 10) { return $dec; } // -Long.MIN_VALUE 轉換爲 2 進制時長度爲65 $buf = array(); $charPos = 64; $isNegative = $dec < 0; //(bccomp($dec, 0) < 0); if (!$isNegative) { $dec = -$dec; // bcsub(0, $dec); } while (bccomp($dec, -$toRadix) <= 0) { $buf[$charPos--] = $num62[-bcmod($dec, $toRadix)]; $dec = bcdiv($dec, $toRadix); } $buf[$charPos] = $num62[-$dec]; if ($isNegative) { $buf[--$charPos] = '-'; } $_any = ''; for ($i = $charPos; $i < 65; $i++) { $_any .= $buf[$i]; } return $_any; } /** * 返回一字符串,包含 number 以 10 進制的表示。 * fromBase 只能在 2 和 62 之間(包括 2 和 62)。 * @param number 輸入數字 * @param fromRadix 輸入進制 * @return 十進制數字 */ function any2Dec($number, $fromRadix) { $num62 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $dec = 0; $digitValue = 0; $len = strlen($number) - 1; for ($t = 0; $t <= $len; $t++) { $digitValue = strpos($num62, $number[$t]); $dec = bcadd(bcmul($dec, $fromRadix), $digitValue); } return $dec; } $sol = '' . PHP_EOL; echo dec2Any('56800235583', 62), $sol; // ZZZZZZ echo any2Dec('ZZZZZZ', 62), $sol; // 56800235583 echo dec2Any('123456', 62), $sol; // w7e echo any2Dec('w7e', 62), $sol; // 123456