Perl在变量

时间:2015-10-28 16:34:37

标签: perl

我有一些二进制数据来自库函数,我存储在一个名为:$ data

的变量中

如果我使用以下方法对此二进制数据进行十六进 $ hexstring = unpack“H *”,$ data;

它正确地执行了这个十六进制转换,我根据unix命令验证了我的结果:od -c和xxd -p: - )

我的问题是如何进行反向操作以将此数据打包回十六进制数据中的$ newdata变量?

如果我执行ref($ data),它会返回一个空白结果,所以我不明白这个二进制数据在$ data变量中最初格式化的格式。库作者告诉我它是一个字符串,但是我尝试打包字符串的经验,它不会产生正确的结果。

我尝试了各种“打包”的尝试,但我似乎不知道如何正确打包。我磕磕绊绊的事情。 : - )

请帮我理解我的包装错误; - )

谢谢!

1 个答案:

答案 0 :(得分:2)

在这种情况下,这很简单。 unpack 'H*'的逆操作是pack 'H*'

这是一个展示

的程序
use strict;
use warnings 'all';
use 5.10.1;

my $data = "\x01\x23\x45\x67\x89\xAB\xCD\xEF";

my $hex = unpack "H*", $data;
say $hex;

my $newdata = pack "H*", $hex;
say $newdata eq $data ? 'OK' : 'FAIL';

输出

0123456789abcdef
OK