【发布时间】:2017-04-05 14:24:31
【问题描述】:
在 Perl 中,我使用 unpack() 函数将二进制数据解压缩为字节。到目前为止,我得到了这个:
my $lenOverHead = 3;
my $lenWithoutOverheads = length($thing->{_raw}) - $lenOverHead;
my @AA;
for (my $i = 0; $i < $lenWithoutOverheads; $i++)
{
push (@AA, unpack('C', substr($thing->{_raw}, $lenOverHead+$i)));
}
请注意,$thing->{_raw} 只是一个带有二进制数据的字符串。
现在的问题是,是否有更好(=更有效)/更好的方法来使用 map() 或类似方法来执行此操作,而不需要 for 循环?
我尝试了以下方法:
my @BB = map { unpack('C', $_) } substr($thing->{_raw}, $lenOverHead);
但当然它只解包第一个字节,而不是全部....
【问题讨论】: