Perl - 从字符串中取出前 16 个字节

Perl - take first 16 bytes from string

我有一个包含 45f5f5ca1997b35bf09b8e0932b0d693967d0608a3c

的字符串

如何获取该字符串的前 16 个字节?

字符串由称为 "characters" 的元素组成(可能是也可能不是字节)。要获取由另一个字符串的前 16 个字符组成的字符串,可以使用以下命令:

 substr($s, 0, 16)

看来您需要将十六进制转换为字节。

my $hex = "45f5f5ca1997b35bf09b8e0932b0d693967d0608a3c";

my @bytes = map { hex } $hex =~ m/(..)/g;


use Data::Dumper;
print Dumper(\@bytes);

print join('', map { sprintf("%x", $_) } @bytes);

您可以自行将数组大小限制为 16 个元素 (substr($hex, 0, 16*2))。