我在理解和使用'vec'关键字时遇到了问题。
我正在读取一个logpacket,其中的值以小端十六进制存储。在我的代码中,我必须使用unpack关键字将不同的字节解压缩到标量中。
以下是我的问题的一个例子:
my @hexData1 = qw(50 65);
my $data = pack ('C*', @hexData1);
my $x = unpack("H4",$data); # At which point the hexadecimal number became a number
print $x."\n";
#my $foo = sprintf("%x", $foo);
print "$_-> " . vec("\x65\x50", $_, 1) . ", " for (0..15); # This works.
print "\n";
但我想以下面的方式使用上述声明。我不想在引号中发送十六进制字符串。我想使用十六进制$ x的标量数组。但它不会起作用。如何将$ x转换为十六进制字符串。这是我的要求。
print "$_-> " . vec($x, $_, 1).", " for (0..15); # This doesn't work.
print "\n";
我的最终目标是读取两字节十六进制数右边的第三位。
如何使用'vec'命令?