增加PHP中十六进制整数的最大长度和大小

时间:2018-03-13 09:45:27

标签: php algorithm hex

我使用函数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。

这是可以理解的,但我仍然在询问是否还有另外一种解决方法。

1 个答案:

答案 0 :(得分:0)

int(和PHP_INT_MAX常量)为platform-specific,对应于long signed int C类型。

我认为你应该使用某种arbitrary precision base converter库或GMP extension,PHP没有内置任意精度算术。