将数字基数 10 转换为基数 62 (a-zA-Z0-9)
我有一个以 10 为基数的数字。有什么办法可以将其转换为以 62 为基数吗?
示例:
echo convert(12324324);
// returns Yg3 (fantasy example here)
PHP 的 base_convert()
最多可以转换为基数 36。
I have a number in base 10. Is there anyway to translate it to a base 62?
Example:
echo convert(12324324);
// returns Yg3 (fantasy example here)
PHP's base_convert()
can convert up to base 36.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
旧:一个快速但肮脏的解决方案可以是使用这样的函数:
基数转换将您的数字转换为数字为 0-9a-p 的基数
然后你可以通过快速字符替换来去掉剩余的数字。
正如您所观察到的,该功能很容易逆转。
顺便问一下,你会用这个功能做什么?
编辑:
根据问题的更改和@jnpcl的答案,这里有一组函数可以在不使用pow和log的情况下执行基本转换(它们需要一半的时间来完成测试)。
这些函数仅适用于整数值。
测试:
OLD: A quick and dirty solution can be to use a function like this:
The base convert translate your number to a base where the digits are 0-9a-p
then you get rid of the remaining digits with a quick char substitution.
As you may observe, the function is easily reversible.
By the way, what would you use this function for?
Edit:
Based on the question change and on the @jnpcl answer, here is a set of functions that performs the base conversion without using pow and log (they take half the time to complete the tests).
The functions work for integer values only.
The test:
一个更简单(并且可能更快)的实现,不使用
pow
也不使用log
:A simpler (and possibly faster) implementation that does not use
pow
norlog
:https://www.php.net/manual/en/ function.base-convert.php#52450
https://www.php.net/manual/en/function.base-convert.php#52450
对于大数字,您可能需要使用 PHP BC 库
For big numbers, you might want to use the PHP BC library
如果可能,此函数的输出与 GNU Multiple Precision 相同……
This function output the same than GNU Multiple Precision if possible…
如果您有 gmp 扩展名:
If you have gmp extension:
有一个字符数组,例如:
have an array of characters like:
它几乎没有经过测试,并且适用于真正的大型产品。
只需复制这个函数并使用即可。
如果需要,可以按顺序排列$baseChars,我需要它进行混合。
反向方法
It was hardly tested and works on real big product.
Just copy this functions and use.
If needed, you can arrange $baseChars sequentially, I need it for blended.
Reverse method