Perl使用printf打印hex字节时如何每16个字节自动插入换行
Perl 十六进制输出按固定宽度换行解决方案
针对你需要每输出16个字节就换行的需求,可以通过增加输出计数判断实现,参考代码如下:
# 初始化输出计数 my $line_byte_count = 0; for ($j = 6; $j < 106; $j++) { printf("%02X ", hex($bytes[$j])); $line_byte_count++; # 满16字节触发换行 if ($line_byte_count % 16 == 0) { print "\n"; } } # 末尾补换行保证格式完整 print "\n";
如果你需要写入文件,只需要将输出目标指向对应的文件句柄即可:
my $line_byte_count = 0; for ($j = 6; $j < @bytes; $j++) { printf outfile ("%02X ", hex($bytes[$j])); $line_byte_count++; if ($line_byte_count % 16 == 0) { print outfile "\n"; } } print outfile "\n";
- 注:原代码中
@bytes[$j]的写法是数组切片语法,访问单个元素更规范的写法是$bytes[$j],两种写法都能运行,你可以根据自己的习惯选择。
内容的提问来源于stack exchange,提问作者user16794037
相关产品推荐
相关产品推荐

