我正在运行 64 位 Ubuntu Linux。 php也是64位的。我正在尝试使用 fscanf 从文件中读取整数。似乎 fscanf 无法扫描超过 32 位的整数。请参阅下面的演示。
var_dump(
$a = PHP_INT_MAX,
--$a,
(string)$a,
sscanf((string)$a, "%u"),
PHP_INT_SIZE
);
输出
int(9223372036854775807)
int(9223372036854775806)
string(19) "9223372036854775806"
array(1) {
[0]=>
string(10) "4294967294"
}
int(8)
看,64 位整数运算有效!只是 sscanf 函数不起作用。可能是我缺少正确的格式。
我如何使用 scanf 在 PHP 中读取 64 位整数?格式是什么?
最佳答案
答案是您需要将 PHP 版本升级到更现代的版本。看来 5.2 has this issue , 但它已在 5.3 中修复
所以升级你的 PHP 版本,你应该可以开始了......(这还不算 5.2 已经停产一段时间了)......
关于php - 通过 (f|v|s)scanf 函数读取 PHP_INT_MAX 或接近值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9664487/