我在这里处于松散状态,这似乎是一个简单的问题,所以我希望有一个简单的答案!
我有一个二进制文件(大约35米),从偏移1536开始,每2048字节有64字节的填充数据 - 我只是想删除这个填充。
第一次出现是1536,然后是3648,5760,7872等
(2112字节 - 64字节的伪数据= 2048)
我尝试过bvi,bbe,hexdump + sed + xxd,我显然遗漏了一些东西。
提前致谢,
答案 0 :(得分:2)
你没有显示任何代码,所以我认为你需要帮助包围算法。它实际上非常简单:
在Perl中,
binmode(STDIN);
binmode(STDOUT);
while (1) {
my $rv = read(STDIN, my $rec, 2112);
die $! if !defined($rv);
last if !$rv;
substr($rec, 1536, 64, '');
print($rec)
or die $!;
}
答案 1 :(得分:-1)
如果你想使用Perl:
使用:raw
图层打开文件。我们不希望:utf8
或:crlf
翻译。
然后,我们可以寻找我们感兴趣的位置,并且可以读取几个字节
my $size = -s $filename;
open my $fh, "<:raw", $filename;
for (seek($fh, 1536, 0) ; tell($fh) + 2048 < $size ; seek($fh, 2048 - 64, 1)) {
read $fh, my $buffer, 64;
...;
}
读
perldoc -f tell
perldoc -f seek
perldoc -f read
了解更多信息