PHP在32位和64位平台上的无符号整数
这是代码:
echo sprintf('%u',-123);
这是 32 位平台上的输出:
4294967173
但在 64 位平台上:
18446744073709551493
如何使其相同?比如说,int(10) unsigned
Here is the code:
echo sprintf('%u',-123);
And this is the output on 32 bit platform:
4294967173
but on 64 bit:
18446744073709551493
How to make it the same ?Say,the int(10) unsigned
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
或者
如果您确实想查看限制为 32 位的负数的二进制补码无符号值,只需执行以下操作即可:
这将在所有系统上打印
4294967173
。or
Though if you actually want to see the two's complement unsigned value of a negative number restricted to 32 bits just do:
And that will print
4294967173
on all systems.查看我对这个问题的回答,以获取一些想法 - 简而言之,您可以检查 PHP_INT_SIZE 常量的值来在 64 位平台上执行不同的处理。
Check out my answer to this question for some ideas - in a nutshell, you can check the value of the PHP_INT_SIZE constant to perform different processing on a 64bit platform.