Perl中的'pack'函数

时间:2013-12-19 06:49:26

标签: perl pack unpack

我的Perl计划:

say 'Hexadecimal notation in a Perl script';
my$str = pack 'H*', '987456123';
print unpack('H*', $str), "\n";
print unpack('h*', $str), "\n";

输出:

Hexadecimal notation in a Perl script
1. 9874561230 # Why is it showing zero here?
2. 8947652103

在我的1结果中,为什么它显示为零?造成这种情况的原因是什么?

1 个答案:

答案 0 :(得分:2)

987456123中的字符数为奇数且H*包装需要偶数,因此对于最后一对(9874,{{1},它假定为零最后是},5612

来自perldoc

  

从模板的开头到pack(),每对字符转换为1个字符的输出。 [...]   如果输入字符串的长度不均匀,则其行为就像在末尾用空字符填充一样。同样,在解包时会忽略“额外”的nybbles。