/**
* @param $str 自定义字符串
* @param $num 十进制数
* @param int $flag $flag为真时表示,首字符可以占首位;否则不可用占首位
* 例:字符串为ABCDEFGHIJKLMNOPQRSTUVWXYZ,$flag为真,Z后面的字符为AA,否则为BA
* 字符串为01234567,$flag为真,7后面的字符为00,否则为10
* @return string
*/
function nbin($str, $num, $flag = 0)
{
$num = floatval($num);
$max = strlen($str);
$arr = str_split($str);
if ($flag) {
$first = '';
array_unshift($arr, $first);
}
if ($num < $max) {
return $arr[$num];
} else {
$mod = fmod($num, $max);
$floor = floor($num / $max);
if ($flag && $mod == 0) {
$floor--;
$mod = $max;
}
return nbin($str, $floor, $flag) . $arr[$mod];
}
}
//测试纯字符
$str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$i = 1;
while ($i <= 100000) {
echo nbin($str, $i, 1);
echo "<br/>";
$i++;
}
//测试数字加字符
$str = '01234567';
$i = 0;
while ($i <= 100000) {
echo nbin($str, $i, 0);
echo "<br/>";
$i++;
}
PHP自定义多进制(首字符是否允许占首位可控制)
最新推荐文章于 2024-08-15 15:00:52 发布