使用vi编辑binary文件

原理:使用xxd将当前文件转成hex格式,编辑,然后再转回去

/usr/bin/xxd

xxd - make a hexdump or do the reverse

例子:

用binary模式启动vi

vi -b test.txt

将所有内容转成hex

:%!xxd

修改你想改的地方;

然后将所有内容转成binary

:%!xxd -r

那么:%!xxd是什么意思呢?

:表示进入vi的命令mode;

%表示当前文件的所有内容,和1,$一样

!表示要执行Linux命令,它后面跟的是需要执行的Linux命令

所以::%!xxd 和:1,$ !xxd的效果一样;

如果想改变xxd的输出groupsize,可以使用-g。

例如::%!xxd -g 1的输出效果如下。

Note:其实%,$等符合是从ex editor来的。具体可参见 Learning the vi and Vim Editors.pdf 一书。

http://vim.wikia.com/wiki/Hex_dump