我使用函数dechex
将大小数转换为十六进制,但我发现使用此函数不适合过大的数字。我使用这个过程,因为它似乎是一个很好的压缩方法来存储大数字。
我试图推断的数字是:
51501851833710653376097681408
我收到了输出:
7fffffff // which is 2147483647, the max int
我尝试过更改INI:
ini_set('PHP_INT_MAX', 0);
其中没有改变十六进制的长度。
我希望能够将十六进制最大值设置为16-32个字符。如果不编写自定义十六进制算法,这可能吗?
从函数dechex
的手册中可以看出:
可以转换的最大数字是PHP_INT_MAX * 2 + 1(或-1):在32位平台上,这将是十进制的4294967295,这会导致dechex()返回ffffffff。
这是可以理解的,但我仍然在询问是否还有另外一种解决方法。
答案 0 :(得分:0)
int
(和PHP_INT_MAX
常量)为platform-specific,对应于long signed int
C类型。
我认为你应该使用某种arbitrary precision base converter库或GMP extension,PHP没有内置任意精度算术。