gpt4 book ai didi

php - 十进制与36进制之间的转换

转载 作者:可可西里 更新时间:2023-11-01 13:41:51 25 4
gpt4 key购买 nike

我想使用 PHP 转换以 36 为基数的数字。函数 base_convert 不起作用,因为我想转换大数:如果我再次将它从 36 进制转换为十进制,我得不到初始数字。

我尝试了多个网站上提供的某些功能,但从未得到相同的结果。此外,这两个网站(使用 Javascript)给出了相同的结果:

例如 1010701001118000000000000000 必须转换为 3IZS0ZE1RQ68W8SSW4

以下是我尝试过的功能(但没有用):

最佳答案

这里有两个使用维基百科上的算法的简单函数,同时使用 bcmath 来正确计算非常大的数字:

function fromDecimalToBase($in, $to) {
$in = (string) $in;
$out = '';

for ($i = strlen($in) - 1; $i >= 0; $i--) {
$out = base_convert(bcmod($in, $to), 10, $to) . $out;
$in = bcdiv($in, $to);
}

return preg_replace('/^0+/', '', $out);
}

function fromBaseToDecimal($in, $from) {
$in = (string) $in;
$out = '';

for ($i = 0, $l = strlen($in); $i < $l; $i++) {
$x = base_convert(substr($in, $i, 1), $from, 10);
$out = bcadd(bcmul($out, $from), $x);
}

return preg_replace('/^0+/', '', $out);
}

但是,对于您提供的号码,我得到 3izs0ze1rq66tifrpc - 也许您的转换有误?

关于php - 十进制与36进制之间的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10471991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com