如何解决PHP 按位非
我需要以 1 字节(字符)、2 字节(短)、4 字节(整数)和 8 字节(长)格式打包一个数字,并应用按位运算符 ~(不是)。对于这些需求,我使用“pack”函数,但面临 8 字节格式的问题。考虑下面的代码:
$num = 1;
$format = "C"; // C,v,V,P
$binary_num = pack($format,$num);
$inv_binary = ~$binary_num;
$unpack_num = unpack($format,$inv_binary)[1];
echo ($unpack_num);
当 $format 为 "C"、"v" 或 "V" 时,我得到预期值:254、65534、4294967294。但是当我使用 "P"(长 8 字节小端)格式时,我得到 - 2 而不是 18446744073709551614。有人可以解释为什么会发生这种情况吗?
附言64 位机 PHP 7.4,8.0
在线沙箱:https://sandbox.onlinephpfunctions.com/code/35bf7ffd4e50096c5cfe52901003ffe3b0e97d2d
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。