如何将十六进制转换为十六进制字符串

时间:2012-03-13 04:55:18

标签: perl

我在理解和使用'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'命令?

0 个答案:

没有答案