我正在读取一个二进制文件格式,它以 4 个常量校验字节开始,然后是 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
太多。