我正在尝试将 php 算法移植到 perl,但我在使用我不熟悉的一位运算符时遇到了困难...
所以 php 代码看起来像这样:
...
$var = '348492634';
print ~$var;
...
结果:-348492635
在 perl 中做完全相同的事情:
...
$var = '348492634';
print ~$var;
...
结果:18446744073361058981
我阅读了很多关于整数大小取决于 cpu 架构的内容,但我从未找到可行的解决方案。也许我只是在 perl 中使用了错误的函数...
逻辑必须获得与 php 脚本中相同的结果。
提前致谢
最佳答案
似乎在您的设置中,PHP 整数是 32 位签名的,而 perl 整数是 64 位无符号的。
这可能会满足您在给定系统上的需要,但如果您在另一个 perl 安装上使用它,则不能保证工作相同。
$var = '348492634'; #hex!
print ~($var - 2**32) - 2**32;
关于php - perl unary ~ 没有给出预期的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19717102/