0
这里无符号整数代码:PHP的32位和64位平台
echo sprintf('%u',-123);
而且这是在32位平台上的输出:
4294967173
,但在64位:
18446744073709551493
如何使它相同?说,int(10)无符号的
这里无符号整数代码:PHP的32位和64位平台
echo sprintf('%u',-123);
而且这是在32位平台上的输出:
4294967173
,但在64位:
18446744073709551493
如何使它相同?说,int(10)无符号的
echo sprintf('-%u',abs(-123));
或
$n = -123;
echo sprintf("%s%u", $n < 0 ? "-":"", abs($n));
但如果你真的想看到仅限于32位负数的补无符号数只是做:
echo sprintf("%u", $n & 0xffffffff);
这将打印在所有系统上4294967173
。
查看我的回答this question的一些想法 - 简而言之,您可以检查PHP_INT_SIZE常量的值以在64位平台上执行不同的处理。
取决于您实际*要*的输出。我可以通过在两者上使用'echo“foo”'来实现。 – 2009-09-28 12:48:47