PHP十进制数三十六机制数互转转换代码

本文介绍了一种在PHP中将十进制数转换为三十六进制数,以及反向转换的方法。通过提供的代码示例,可以实现ID的缩短,如生成短网址,同时提供了转换前后数值一致性的验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PHP十进制数三十六机制数互转转换代码

用途举例:10进制ID转36进制已缩短网址,具体用途比如短网址

<?php

/** 
 * @desc  im:十进制数转换成三十六机制数 
 * @param (int)$num 十进制数 
 * return 返回:三十六进制数 
*/  

function get_char($num) {  
    $num = intval($num);  
    if ($num <= 0)  
        return false;  
    $charArr = array("1","2","3","4","5","6","7","8","9","!",'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');  
    $char = '';  
    do {  
        $key = ($num - 1) % 36;  
        $char= $charArr[$key] . $char;  
        $num = floor(($num - $key) / 36);  
    } while ($num > 0);  
    return $char;  
}  
  
/** 
 * @desc  im:三十六进制数转换成十机制数 
 * @param (string)$char 三十六进制数 
 * return 返回:十进制数 
 */  
function get_num($char){  
    $array=array("1","2","3","4","5","6","7","8","9","!","A", "B", "C", "D","E", "F", "G", "H", "I", "J", "K", "L","M", "N", "O","P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y","Z");  
    $len=strlen($char);  
    for($i=0;$i<$len;$i++){  
        $index=array_search($char[$i],$array);  
        $sum+=($index+1)*pow(36,$len-$i-1);  
    }  
    return $sum;  
} 

//使用实例:验证转前后是否相等
for($ia=1;$ia<1000;$ia++){ 
$ibm = get_char($ia);
$ibs = get_num($ibm);

if ($ia == "".$ibs){
echo "<h2>$ia</h2>"; 
echo "{$ia}:{$ibm}<br>"; 
echo "{$ibm}:{$ibs}<br>";
}else{
echo "<h1>@@ $ia</h1>"; 
}

}  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值