下面是关于“PHP实现36进制与10进制转换功能”的攻略,包括基本概念、转换方法以及示例代码。
基本概念
在计算机科学中,36进制是指使用36个数字和字母(0-9, A-Z)来表示数字的进位系统,与10进制(0-9)不同。而10进制是我们最常使用的进位系统,也称为“十进制数制”。
在实际应用中,我们经常需要将36进制与10进制之间进行相互转换,用于解密、编码、加密等各种场合。
转换方法
10进制转36进制
- 将10进制数不断地除以36,每次取余数作为36进制数的高位数字,直到商为0。
- 将得到的所有余数倒序排列即可得到36进制数。
示例代码:
function decimalTo36($num) {
$chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$result = '';
while ($num > 0) {
$rem = $num % 36;
$result = $chars[$rem] . $result;
$num = (-1) * floor((-1) * $num / 36);
}
return $result;
}
echo decimalTo36(12345); // 输出:9IX
36进制转10进制
- 将36进制数从最高位到最低位依次遍历。
- 将每个36进制数字转化为10进制数字,再乘以该位上的权值(36的对应的幂次方),然后将所有结果相加即可。
示例代码:
function from36($num) {
$chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$result = 0;
$len = strlen($num);
for ($i = 0; $i < $len; $i++) {
$result += strpos($chars, $num[$i]) * pow(36, $len - $i - 1);
}
return $result;
}
echo from36('9IX'); // 输出:12345
示例说明
示例1
需求:将36进制数‘ZZZ’转换为10进制数。
解法:
- 将36进制数从最高位到最低位依次遍历:'Z' -> 'Z' -> 'Z'
- 将每个36进制数字转化为10进制数字,再乘以该位上的权值,即 $10^2$、$10^1$、$10^0$,相加即可:$3510^2 + 3510^1 + 35*10^0 = 46655$
示例代码:
function from36($num) {
$chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$result = 0;
$len = strlen($num);
for ($i = 0; $i < $len; $i++) {
$result += strpos($chars, $num[$i]) * pow(36, $len - $i - 1);
}
return $result;
}
echo from36('ZZZ'); // 输出:46655
示例2
需求:将10进制数1000转换为36进制数。
解法:
- 将10进制数不断地除以36,每次取余数作为36进制数的高位数字,直到商为0。算出来的余数需要转化为对应的36进制数字。
- 将得到的所有余数倒序排列即可。
示例代码:
function decimalTo36($num) {
$chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$result = '';
while ($num > 0) {
$rem = $num % 36;
$result = $chars[$rem] . $result;
$num = (-1) * floor((-1) * $num / 36);
}
return $result;
}
echo decimalTo36(1000); // 输出:RS
以上是关于“PHP实现36进制与10进制转换功能”的攻略,希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php实现36进制与10进制转换功能示例 - Python技术站