Pet*_*erK 2 binary perl file-io hex
这可能是一个相当新手的问题,但我需要处理某个文本文件并将其内容转储到二进制文件中,我不知道如何 - 我决定使用perl,但我的perl技能非常低.我可能应该用C++编写这个,但对于perl来说这似乎是一个很好的简单任务,所以为什么不学习新的东西呢?;)文本文件有以下格式的数千行:
2A02FC42 4
您可以将其视为十六进制数字(长度始终为 8)和常规数字.现在我需要以这种格式将所有行转储到二进制文件中(当使用十六进制编辑器查看时,它应该如下所示):
42FC022A00000004
更多例子很清楚:
70726F67 36- > 676F727000000024
6A656374 471- > 7463656A000001D7
解析输入文件的部分很简单,但我仍然停留在第二部分,我应该将其写入二进制文件.我不知道如何以这种方式格式化数据,甚至不知道如何以二进制模式输出数据.有人可以帮帮我吗?
谢谢.
编辑:更新了示例,忘记了endiannes - 我在LE系统上.
用途pack:
#! /usr/bin/perl
use warnings;
use strict;
# demo only
*ARGV = *DATA;
while (<>) {
my($a,$b) = split;
$a = join "", reverse $a =~ /(..)/g;
$b = sprintf "%08x", $b;
print pack "H*" => $a . $b;
}
__DATA__
2A02FC42 4
70726F67 36
6A656374 471
Run Code Online (Sandbox Code Playgroud)
样品运行:
$ ./prog.pl | od -t x1 0000000 42 fc 02 2a 00 00 00 04 67 6f 72 70 00 00 00 24 0000020 74 63 65 6a 00 00 01 d7 0000030