我的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
结果中,为什么它显示为零?造成这种情况的原因是什么?
答案 0 :(得分:2)
987456123
中的字符数为奇数且H*
包装需要偶数,因此对于最后一对(98
,74
,{{1},它假定为零最后是},56
和12
。
来自perldoc:
从模板的开头到pack(),每对字符转换为1个字符的输出。 [...] 如果输入字符串的长度不均匀,则其行为就像在末尾用空字符填充一样。同样,在解包时会忽略“额外”的nybbles。