我有一些二进制数据来自库函数,我存储在一个名为:$ data
的变量中如果我使用以下方法对此二进制数据进行十六进 $ hexstring = unpack“H *”,$ data;
它正确地执行了这个十六进制转换,我根据unix命令验证了我的结果:od -c和xxd -p: - )
我的问题是如何进行反向操作以将此数据打包回十六进制数据中的$ newdata变量?
如果我执行ref($ data),它会返回一个空白结果,所以我不明白这个二进制数据在$ data变量中最初格式化的格式。库作者告诉我它是一个字符串,但是我尝试打包字符串的经验,它不会产生正确的结果。
我尝试了各种“打包”的尝试,但我似乎不知道如何正确打包。我磕磕绊绊的事情。 : - )
请帮我理解我的包装错误; - )
谢谢!
答案 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