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

标签 php algorithm hex

我正在使用函数 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/

相关文章:

javascript - 表单始终无法正确提交值

php - 在 Laravel 中使用 JSON 列

不相交条件下的资源分配算法

python-3.x - 在二进制文件中搜索所有出现的字节串

PHP 类作用域

javascript - AJAX 和 PHP 数据传输不工作

algorithm - 查找要在字符串中添加的最少字符数以使其成为回文

algorithm - 从线性同余 RNG 生成随机向量

以 URL 安全方式压缩十六进制 GUID 的算法?

c++ - Arduino 字符数组到整数值