我正在使用函数 dechex
将大的小数转换为十六进制,但我发现使用此函数对于过大的数字效果不佳。我正在使用这个过程,因为它似乎是一种很好的存储大数字的压缩方法。
我试图十六进制化的数字是:
51501851833710653376097681408
我收到输出:
7fffffff // which is 2147483647, the max int
我试过更改 INI:
ini_set('PHP_INT_MAX', 0);
其中并没有改变十六进制的长度。
我希望能够使十六进制最大长度为 16-32 个字符。如果不编写自定义十六进制算法,这可能吗?
从函数 dechex
的手册中指出:
The largest number that can be converted is PHP_INT_MAX * 2 + 1 (or -1): on 32-bit platforms, this will be 4294967295 in decimal, which results in dechex() returning ffffffff.
这是可以理解的,但我仍然询问是否有其他解决方法。
最佳答案
int
(和 PHP_INT_MAX
常量)是 platform-specific对应于 long signed int
C 类型。
我认为你应该使用某种 arbitrary precision base converter图书馆或 GMP extension , PHP 没有内置任意精度算法。
关于php - 增加PHP中十六进制整数的最大长度和大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49252865/