2009-09-28 175 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位平台上执行不同的处理。