Perl 中的“打包”函数
Posted
技术标签:
【中文标题】Perl 中的“打包”函数【英文标题】:The 'pack' function in Perl 【发布时间】:2013-12-19 06:49:26 【问题描述】:我的 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】:987456123
中的字符数为奇数,H*
包装要求偶数,因此最后一对(98
、74
、56
、12
和 30
假设为零最后)。
来自perldoc:
从模板开始到pack(),每对字符转换为1个字符输出。 [...] 如果输入字符串的长度不是偶数,它的行为就像在末尾用空字符填充一样。同样,“额外”的 nybbles 在解包过程中会被忽略。
【讨论】:
谢谢你澄清我的疑问 有时我们使用H*
,有时使用*H
。为什么我们这样使用。这些有什么区别?请告诉我
@OlegG, "If the length of the input string is not even, it behaves as if padded by a null character at the end."以上是关于Perl 中的“打包”函数的主要内容,如果未能解决你的问题,请参考以下文章