perl - 如何使用 Perl 从二进制文件中获取最后 16 个字节?

标签 perl

我用 Perl 读取了图像:

open (FILE,"<$filename") or die $!;
            binmode FILE;
            while (($n = read FILE, $data, 4) != 0) {
                $buf .= $data;
            }
close (FILE);

如何从该文件中仅获取最后 16 个字节?背景是,我想将一个图像的最后 16 个字节与另一个图像的最后 16 个字节进行比较。

最佳答案

使用seek移动到文件结束前 16 个字节的位置,然后读取这 16 个字节:

open (FILE, "<$filename") or die $!;
binmode FILE;
seek FILE, -16, 2;
read FILE, $data, 16;
close (FILE);

您还可以使用常量代替 2:

use Fcntl qw(SEEK_END);

open (FILE, "<$filename") or die $!;
binmode FILE;
seek FILE, -16, SEEK_END;
read FILE, $data, 16;
close (FILE);

关于perl - 如何使用 Perl 从二进制文件中获取最后 16 个字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38605332/

相关文章:

regex - 按 Perl 字符串的子集排序

php - Perl 正则表达式查找和替换 php 多行注释

php - 在 Perl 和 PHP 之间解码/编码 openssl aes cbc 字符串

regex - 更正 bash sed 命令语法以获得正确的子字符串

perl - 如果已安装,我如何需要可选的 Perl 模块?

regex - 如何在匹配模式后插入字符串

perl - 跳出循环 Perl

json - 无法在命令行中解码 json 字符串

mysql - Perl - 如果表不存在

perl - 模块::构建缓存清理