PHP将有符号64位整数转换为十六进制并返回

PHP将有符号64位整数转换为十六进制并返回,php,integer-overflow,Php,Integer Overflow,在64位系统上,不正常。我宁愿不使用bcmath,但我认为有必要: 测试代码,可以工作,但返回输出为64位无符号整数和溢出(PHP不支持64位无符号整数) 将返回: int(-3172679146711529273) string(16) "d3f8612029f848c7" float(1.5274064926998E+19) 另一种方法是将整数打包成另一种格式(基数36?)。实际问题是什么?PHP支持有符号整数,没有问题。。。但是,它怀疑是未签名的。一个明显的选择。所以,问题变成了:你只需

在64位系统上,不正常。我宁愿不使用bcmath,但我认为有必要:

测试代码,可以工作,但返回输出为64位无符号整数和溢出(PHP不支持64位无符号整数)

将返回:

int(-3172679146711529273)
string(16) "d3f8612029f848c7"
float(1.5274064926998E+19)

另一种方法是将整数打包成另一种格式(基数36?)。

实际问题是什么?PHP支持有符号整数,没有问题。。。但是,它怀疑是未签名的。一个明显的选择。所以,问题变成了:你只需要对有符号的64位整数进行数学运算,还是真的需要它们的十六进制表示?这两个问题的答案完全不同。
int(-3172679146711529273)
string(16) "d3f8612029f848c7"
float(1.5274064926998E+19)