gpt4 book ai didi

perl - 如何在Perl中求和大十六进制值?

转载 作者:行者123 更新时间:2023-12-01 06:00:27 35 4
gpt4 key购买 nike

我正在遍历一组32位十六进制字符串(“ DEADBEEF”,“ 12345678”等),并且试图将它们加在一起形成一个32位校验和。在下面的示例中,假定变量$temp装有一些十六进制字符串。

my $temp;
my $checksum;

for (...)
{
#assume $temp is loaded with a new hex string here
my $tempNum = hex ($temp);
$checksum += $tempNum;
$checksum &= 0xFFFFFFFF;
print printf("checksum: %08X",$checksum);
}


前几个值为“ 7800798C”,“ 44444444”和“ 44444444”。输出为:


校验和:7800798C校验和:
BC44BDD0校验和:FFFFFFFF
校验和:FFFFFFFF


等等..

如您所见,前两个总和是正确的,然后似乎饱和了。我是否缺少有关Perl变量大小限制的信息?

编辑:这是脚本的实际输出(字符串是十六进制字符串,值是该字符串的十进制转换,校验和是结果输出):

字符串:7800798C,值:2013297036,校验和7800798C
字符串:44444444,值:1145324612,校验和BC44BDD0
字符串:44444444,值:1145324612,校验和FFFFFFFF
字符串:44444444,值:1145324612,校验和FFFFFFFF
字符串:78007980,值:2013297024,校验和FFFFFFFF
字符串:44444444,值:1145324612,校验和FFFFFFFF

最佳答案

之前在Perl Monks询问过此问题。

答案似乎是“ use integer”。

请在Perl Monks和perldoc integer上查看原始答案。

$ perl -we 'use integer; printf("%08X\n",  0xFFFF_FFFF + 0xFFFF_FFFF)'

关于perl - 如何在Perl中求和大十六进制值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1790380/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com