原理
- 字符:
0123456789ABCDEF
- 除16取余数得最低1位,然后把商继续除得第2位,直到商等于0
65036
除 16,余数 12(C)
,商 4064
4064
除 16,余数 0(0)
,商 254
254
除 16,余数 14(E)
,商 15
15
除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