php - 通过 (f|v|s)scanf 函数读取 PHP_INT_MAX 或接近值

标签 php linux 64-bit integer scanf

我正在运行 64 位 Ubuntu Linux。 也是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/

相关文章:

linux - ImageMagick -liquid-rescale 选项错误

c# - 计算 64 位(长,大)整数中的位数?

PHP + jQuery - 未定义索引 : , 但它仍然成功发布?

Javascript XMLHttpRequest FormData 发送不起作用

php - 使用ajax从mysql获取日期时间返回NaN或未定义

linux - 如何告诉shell命令tail不要等待参数

php - 能够从Windows连接到Linux上的mysql数据库的步骤是什么

c++ - 在 64 位 Ubuntu 上编译 x32 位 LD_PRELOAD

c - 64 位环境中的 printf/snprintf 行为

php - Wordpress + Bootstrap 3 + 响应式缩略图网格