首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl -从十六进制的特定偏移量中提取数据

Perl -从十六进制的特定偏移量中提取数据
EN

Stack Overflow用户
提问于 2013-02-04 15:14:28
回答 2查看 277关注 0票数 1

好的,我实际上已经花了一些精力来完成这个任务,这一次:)

我有这样的代码:

代码语言:javascript
复制
#! /usr/bin/perl

open(my $fin, '<', "./file1.bin") or die "Cannot open file1.bin: $!";
binmode($fin);
open(my $fout, '>>', "./file2.bin") or die "Cannot create file2.bin: $!";
binmode($fout);


seek($fin,0x760, SEEK_CUR);
read($fin, 0x400,)
print ("$fin, $fout);
close($fout);

我不知道您是否能看到我正在尝试做什么,但我正在尝试偏移0x760,然后从偏移0x760读取,然后从file1.bin读取一个字节块(0x400),并将该字节块打印到file2.bin

所以我猜这就是我要做的事情的流程:

代码语言:javascript
复制
open file1.bin for reading in binmode
open file2.bin for writing in binmode
seek to offset 0x760 in file1.bin
read a chunk of data (0x400) from file1.bin
write the chunk of data (0x400) to file2.bin

希望您理解我正在尝试实现的目标:),任何输入都将是有教育意义的:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-04 15:36:44

您的代码中有一个拼写错误:

代码语言:javascript
复制
print ("$fin, $fout);

应替换为(在opening和bindmode之后)

代码语言:javascript
复制
my $buffer = '';
sysseek $fin, 0x760, SEEK_SET;
sysread $fin, $buffer, 0x400;
syswrite $fout, $buffer;
close $fin;
close $fout;
票数 1
EN

Stack Overflow用户

发布于 2013-02-04 15:36:32

您忘记启用警告(这会告诉您"SEEK_CUR“被解释为字符串,因为您没有导入常量)。

阅读Read文档;您需要提供一个变量,以便读取数据。

它的语法是print FILEHANDLE LIST;(其中FILEHANDLE应该是$fout,并列出您读入的变量)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14681963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档