gpt4 book ai didi

perl - 如何在不实际解包的情况下获取 Perl 中打包项目的数量?

转载 作者:行者123 更新时间:2023-12-01 10:12:58 25 4
gpt4 key购买 nike

我有一串 packed 值,它们是使用类似以下内容顺序创建的:

while (...) {
...
$packed .= pack( 'L', $val );
}

在另一个程序中,在加载$packed 后,我想知道实际打包了多少个值。我知道在 unpacking 之后该怎么做:

my @vals = unpack( 'L*', $packed );
print scalar(@vals);

但真的有必要吗?如果我只关心值的数量,我可以做得更好并跳过 unpacking 吗?

最佳答案

因为您知道压缩值的大小(L 是一个无符号的 32 位 int,或 4 个字节),只需将长度除以大小:

my $count = length($packed) / 4;

如果您不想硬编码大小,您也可以打包一个样本值来计算它。 (请注意,Perl 的编译时常量折叠不适用于 pack,至少不适用于 5.10.1,因此您只想进行一次计算。)

my $size = length(pack('L', 0));
...
my $count = length($packed) / $size;

关于perl - 如何在不实际解包的情况下获取 Perl 中打包项目的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3834796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com