2012-03-12 90 views
2

我正在運行64位Ubuntu Linux。 也是64位的。我正在嘗試使用fscanf從文件中讀取整數。看來fscanf無法掃描超過32位的整數。看到示範波紋管。通過(f | v | s)scanf函數讀取PHP_INT_MAX或接近值

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位整數?格式是什麼?

+0

仍然沒有答案! – 2012-03-12 11:27:24

+0

PHP版本? [Bug#47842 sscanf()不支持64位值](https://bugs.php.net/bug.php?id=47842) – Leigh 2012-03-12 11:51:17

回答

1

答案是您需要將您的PHP版本升級到更新版本。看來,5.2 has this issue,但它的固定在5.3

所以升級你的PHP版本,你應該是好去... ...(而且這還不是5.2 EOL有一段時間了)...

+0

我正在使用[** PHP 5.3.2-1ubuntu4.14 * *](http://pastie.org/3577267)。爲什麼會顯示這樣的錯誤? – 2012-03-12 12:44:02

+0

從5.3.2升級到5.3的最新版本......近2年前已修復。從查看日期,5.3.3應該修復... – ircmaxell 2012-03-12 12:50:24