原理
字符:0123456789ABCDEF除16取余数得最低1位,然后把商继续除得第2位,直到商等于065036 除 16,余数 12(C),商 40644064 除 16,余数 0(0),商 254254 除 16,余数 14(E),商 1515 除16,余数 15(F),商 0,结束得16进制为 FE0C
代码
<?php
function L($str) {
echo "\n{$str}";
}
function encode($num, $bas = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ") {
$len = strlen($bas);
$str = "";
do {
$remainder = $num / $len;
$quotient = $num % $len;
$char = $bas[intval($quotient)];
$str = $char . $str;
$num = $remainder;
} while($num >= 1);
return $str;
}
function decode($str, $bas = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ") {
$len = strlen($bas);
$str = strrev($str);
$num = 0;
for ($i = 0; $i < strlen($str); $i++) {
$pos = strpos($bas, $str[$i]);
$num = $num + (pow($len, $i) * $pos);
}
return $num;
}
$a = 6;
$a += 100000;
L("[数字] " . $a);
L("[结果] " . encode($a));
下面是输出
[数字] 100006
[结果] 255Y