【发布时间】:2013-03-19 23:13:52
【问题描述】:
我正在读取一个二进制文件格式,它以 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 除了十六进制编码和其他业余爱好外,我并没有使用太多。
【问题讨论】: