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

我正在运行64位的Ubuntu Linux。 PHP也是64位的。 我正在尝试使用fscanf从文件中读取整数。 看来fscanf不能扫描超过32位的整数。 看示范波纹pipe。

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位整数algorithm的作品! 它只是sscanf函数不工作。 可能是我错过了一个适当的格式
我如何使用scanf读取PHP中的64位整数? 格式是什么?

答案是你需要将你的PHP版本升级到更新的版本。 看来5.2有这个问题 ,但在5.3中是固定的

因此,升级你的PHP版本,你应该很好去…(这不包括5.2是现在的EOL)。