加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 使用“use integer”的XOR操作在Windows和Linux上给出不

发布时间:2020-12-16 06:06:06 所属栏目:大数据 来源:网络整理
导读:为什么我在 Windows和 Linux上使用整数编译指示下的XOR表达式0 ^ 2506133561得到不同的结果? 视窗: perl -e "use integer; print 0^2506133561"-1788833735 Linux的: perl -e 'use integer; print 0^2506133561'2506133561 解决方法 Windows上的Perl解释
为什么我在 Windows和 Linux上使用整数编译指示下的XOR表达式0 ^ 2506133561得到不同的结果?

视窗:

perl -e "use integer; print 0^2506133561"
-1788833735

Linux的:

perl -e 'use integer; print 0^2506133561'
2506133561

解决方法

Windows上的Perl解释器很可能使用32位整数,而您在Linux上使用的解释器则使用64位整数.

要测试它,请运行shell命令:

perl -V:ivsize

在每个系统上.它应该在32位perls上打印ivsize =’4′,在64位perls上打印ivsize =’8′.您还可以使用Config模块中的$Config {ivsize}在Perl脚本中获取此信息.

要强制将位操作的结果解释为带符号的32位数,即使在64位perls上,也可以使用pack

$num = unpack "l",pack "l",$num;

或者,您可以使用简单的位操作和算法,如mpapec建议:

$num &= 0xFFFFFFFF;
$num -= 2**32 if $num >= 2**31;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读