2009-09-28 172 views
0

這裏無符號整數代碼:PHP的32位和64位平臺

echo sprintf('%u',-123); 

而且這是在32位平臺上的輸出:

4294967173 

,但在64位:

18446744073709551493 

如何使它相同?說,int(10)無符號的

+0

取決於您實際*要*的輸出。我可以通過在兩者上使用'echo「foo」'來實現。 – 2009-09-28 12:48:47

回答

3
echo sprintf('-%u',abs(-123)); 

$n = -123; 
echo sprintf("%s%u", $n < 0 ? "-":"", abs($n)); 

但如果你真的想看到僅限於32位負數的補無符號數只是做:

echo sprintf("%u", $n & 0xffffffff); 

這將打印在所有系統上4294967173

0

查看我的回答this question的一些想法 - 簡而言之,您可以檢查PHP_INT_SIZE常量的值以在64位平臺上執行不同的處理。