2024-06-16 09:33:46 发布
网友
我在这里无所适从,这似乎是一个如此简单的问题,所以我希望有一个简单的答案!在
我有一个二进制文件(大约35m),每2048字节有64个字节的填充数据,从偏移量1536开始-我只想删除这个填充。在
第一次出现是1536次,然后是364857607872次,以此类推
(2112字节-64字节的虚拟数据=2048)
我试过bvi,bbe,hextump+sed+xxd,显然我遗漏了一些东西。在
提前谢谢你
你没有显示任何代码,所以我想你需要帮助来理解算法。其实很简单:
在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 $!; }
如果要使用Perl:
用:raw层打开文件。我们不需要:utf8或:crlf翻译。在
: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
更多信息
你没有显示任何代码,所以我想你需要帮助来理解算法。其实很简单:
在Perl中
如果要使用Perl:
用
:raw
层打开文件。我们不需要:utf8
或:crlf
翻译。在然后,我们可以找到我们感兴趣的位置,并且可以读取几个字节
阅读
perldoc -f tell
perldoc -f seek
perldoc -f read
更多信息
相关问题 更多 >
编程相关推荐