我正在读取一个二进制文件格式,它以4个常量校验字节开始,后面跟着3个八位字节,表示记录的数据部分将会有多长。我可以解码如下:在Perl中解码3字节整数
read($fh, $x, 7) or do {
last if eof;
die "Can't read: $!";
};
my ($type, $l1, $l2, $l3) = unpack("a4 C3", $x);
my $length = $l1 << 16 | $l2 << 8 | $l3;
是否有更直接的方式来读取该3字节值,没有中间变量?我错过了pack
规格中的某些东西?除了十六进制编码和其他一些困难追求之外,我还没有非常使用pack
。
听起来很不错,谢谢。 – 2013-03-20 03:08:27