【发布时间】:2016-05-01 19:18:36
【问题描述】:
我有两个大小相等但值不同的二进制文件。我使用unpack如下,结果很奇怪。
当我使用“大”二进制文件时,两个输出都显示部分结果:
一个二进制文件开始好 - 结束不好,
第二个二进制文件在开始时出错。
您认为可能的弱点在哪里?
open(BIN_FILE1, "<bin_files/BINF1.bin") or die("Cannot open file for writing");
open(BIN_FILE2, "<bin_files/BINF2.bin") or die("Cannot open file for writing");
binmode(BIN_FILE1);
binmode(BIN_FILE2);
# N An unsigned long (32-bit) in "network" (big-endian) order.
my @values_tmp1 = unpack("N*", <BIN_FILE1>);
my @values_tmp2 = unpack("N*", <BIN_FILE2>);
close (BIN_FILE1);
close (BIN_FILE2);
my $tmp_bin1 = @values_tmp1;
my $tmp_bin2 = @values_tmp2;
print "\nBIN FILE1 LENGTH: ",$tmp_bin1,"\n";
print "\nBIN FILE2 LENGTH: ",$tmp_bin2,"\n";
输出是:
BIN 文件 1 长度:1203
BIN 文件 2 长度:124
输入文件是:
-rw-rw-r-- 1 yodar yodar 9600 2009-12-23 19:59 BINF1.bin
-rw-rw-r-- 1 yodar yodar 9600 2009-12-27 16:38 BINF2.bin
如果有另一种简单且安全的方法将二进制文件数据收集到数组中,我会很高兴知道。
【问题讨论】:
标签: perl