perl - 如何在 Perl 中计算二进制统计数据?

标签 perl binary statistics counting

我本质上是在寻求做一个典型/好的十六进制编辑器可以做的事情:

https://www.hhdsoftware.com/doc/hex-editor/statistics-statistics-tool-window.html

我希望能够计算每个字节的出现次数并将其放入表中,以便我可以确定“00”与“FF”相比的百分比。

我已经成功获得了熵,一旦我完成了上述工作,其他统计数据,例如均值、中位数和众数就变得多余了。

还有一个问题,我正在编译统计的二进制文件非常大,32mb+。

有什么建议吗?

最佳答案

use List::Util qw( sum );

use constant BLOCK_SIZE => 4*1024*1024;

open(my $fh, '<:raw', $qfn)
   or die("Can't open \"$qfn\": $!\n");

my @counts = (0) x 256;
while (1) {
   my $rv = sysread($fh, my $buf, BLOCK_SIZE);
   die($!) if !defined($rv);
   last if !$rv;

   ++$counts[$_] for unpack 'C*', $buf;
}

my $N = sum @counts;

关于perl - 如何在 Perl 中计算二进制统计数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53137917/

相关文章:

perl - 在模式中使用带有空格的 Perl glob

Perl 和复杂的 SOAP 请求

syntax - 在verilog中将连线值转换为整数

c - 在 C 中将 int 写入二进制文件时出现问题

arrays - 当尝试在随机数字数组中查找运行最大值时,会调用多少次更新最大值?

python - 根据大小分割文件的有效方法

linux - 在 SSH 到另一台服务器后抑制输出

algorithm - 计数到 N 的位模型成本

用于创建多维周期性基函数的 R 包?

Python元分析库