gpt4 book ai didi

perl - 如何从十六进制格式的解包中获取校验和?

转载 作者:行者123 更新时间:2023-12-04 06:33:44 27 4
gpt4 key购买 nike

我一直在试图找出 unpack在 Perl 中运行,并不能完全弄清楚整个事情。

我拥有的:
一个字符串和一个 16 位十六进制校验和
(例如 "this is my string""0671" )

我需要检查一下 "this is my string"等于校验和 '0671' .

所以我知道unpack("%16W*", $string)会给我 16 位十进制值,但我需要十六进制表示。我知道这很容易,所以请原谅我的无知。

最佳答案

正如你所说,unpack("%16W*", $string)给你一个整数。要将整数转换为十六进制,请使用 sprintf :

my $string = "this is my string";
my $expected = '0671';

my $checksum = sprintf('%04x', unpack("%16W*", $string));
print "match\n" if $checksum eq $expected;

如果你想要大写的十六进制数字,使用 %X而不是 %x (或 %04X 在这种情况下)。

或者,您可以换一种方式使用 hex 将十六进制校验和转换为整数。 :
my $string = "this is my string";
my $expected = '0671';

my $checksum = unpack("%16W*", $string);
print "match\n" if $checksum == hex $expected; # now using numeric equality

关于perl - 如何从十六进制格式的解包中获取校验和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5083561/

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