我想知道是否有人知道一个命令行实用程序,这将允许我直接写入hex值的文件。 这样当文件的hexdump完成时,我input的值将被吐出。 直接写入hex是非常重要的,因为我需要编写的许多值没有任何与之相关的unicode或ascii等效字符。 寻找像这样的东西:
writehex f6050000 ac7e0500 02000800 01000000 newfile hexdump newfile hexdump 1.02 ts.event.1 00000000: f6050000 ac7e0500 02000800 01000000 .....~.......... 16 bytes read
这个Bash函数应该为你工作:
writehex () { while [ $1 ]; do for ((i=0; i<${#1}; i+=2)) do printf "\x${1:i:2}"; done; shift; done }
testing它:
$ writehex abc00001ff | hexdump -C 00000000 ab c0 00 01 ff |.....| 00000005 $ writehex f6050000 ac7e0500 02000800 01000000 | hexdump -C 00000000 f6 05 00 00 ac 7e 05 00 02 00 08 00 01 00 00 00 |.....~..........| 00000010
另一个select是使用xxd 。
$ echo hello | xxd 0000000: 6865 6c6c 6f0a $ echo hello | xxd | xxd -r hello
编辑:
此外,您可以使用-p选项来接受有些自由格式的input数据:
$ echo 'f6050000 ac7e0500 02000800 01000000' | xxd -r -p | hexdump -C 00000000 f6 05 00 00 ac 7e 05 00 02 00 08 00 01 00 00 00 |.....~..........| 00000010
编辑2:
修改上面的函数来处理多个input参数(由空格分隔的hex数字的string)。
用perl :
perl -ne '@a=split;for(@a){print chr(hex($_))}' inputfile > outputfile
input文件的内容被格式化的地方:
42 43 44
outputfile将包含BCD 。 你可以像vi那样准备你的input文件:
:%s/ //g :%s/\(.\{2\}\)/\1 /g
这将删除所有空格,然后在每个字符之间插入一个空格。
你用perl行给出的例子:
$ cat inputfile f6 05 00 00 ac 7e 05 00 02 00 08 00 01 00 00 00 $ hexdump outputfile 0000000 f6 05 00 00 ac 7e 05 00 02 00 08 00 01 00 00 00 0000010
一个hex编辑器如hexedit或hexer? 您可以直接编辑文件并用hex键入值。