Perl - 解析二进制文件并返回指定偏移量的值

Jas*_* W. 2 binary perl hex offset

我有一个二进制文件,我需要能够解析.我要做的是指定一个偏移量,然后让程序返回该位置的字节值.

我不确定的是如何解决这个问题.我有文件打开部分,但我不知道如何让程序跳转到该位置.

任何帮助,将不胜感激.

谢谢.

tch*_*ist 5

use Fcntl qw(:seek);

my($fh, $filename, $byte_position, $byte_value);

$filename      = "/some/file/name/goes/here";
$byte_position = 42;

open($fh, "<", $filename)
  || die "can't open $filename: $!";

binmode($fh)
  || die "can't binmode $filename";

sysseek($fh, $byte_position, SEEK_CUR)  # NB: 0-based
  || die "couldn't see to byte $byte_position in $filename: $!";

sysread($fh, $byte_value, 1) == 1
  || die "couldn't read byte from $filename: $!";

printf "read byte with ordinal value %#02x at position %d\n",
     ord($byte_value), $byte_position;
Run Code Online (Sandbox Code Playgroud)

  • @daxim只有你每次都非常小心地写"使用autodie v2.12",我真的不相信别人可以做,也没有.请记住,这必须在基本供应商Perl安装上运行.我也担心人们会在没有它的情况下剪掉它,在这种情况下它们真的很麻烦.这是一个可爱的快速功能,但你必须非常小心这些建议. (2认同)