vim修改二进制文件

先用vim以二进制格式打开需要编辑或查看的文件,不采用-b参数有时会导致转换错误,详见分隔线后部分。   
vim -b file-to-open.dat
然后用xxd把文件转换成十六进制格式
:%!xxd
转化后显示类似如下
 
0000000: 5036 0a35 3932 2033 3230 0a32 3535 0a20  P6.592 320.255.
0000010: 190e 2019 0e20 190e 2019 0e20 190e 2019  .. .. .. .. .. .
0000020: 0e20 190e 2019 0e1f 180c 1f18 0c1f 180c  . .. ...........
0000030: 1f18 0c1f 180c 1f18 0c1f 180c 1f18 0c27  ...............‘
0000040: 1b0d 261a 0c24 1b0e 2319 0d22 180e 2017  ..&..$..#..".. .
0000050: 0c1f 180c 1e16 0b25 1d16 251d 1620 1a13  .......%..%.. ..
现在就可以对待普通文本一样查看和编辑二进制文件了。
修改十六进制内容是不会导致右侧字符改变;其实右侧的文本只是给你参考的,修改了再将十六进制转换回二进制,这些修改都会忽略。
   
修改完成使用xxd把十六进制转换回二进制:
:%!xxd -r
只有十六进制的修改会生效。
****************分**********隔**********线****************
VIM显示十六进制出错
在linux下用vim打开jpg文件,使用%!xxd进行16进制显示时,文件头显示为”3f3f
3f3f 0011 0804″文件尾端显示为 “3f3f
0a”;而同样的操作在windows下,就显示为”ffd8 ffc0 0011 0804″和 “ffd9
0a”,这才是正确的jpeg文件头和文件尾标志。
很蹊跷 !
初时,我以为是jpeg在windows和linux下是不同的文件头,后来把jpg后缀去掉,就一个纯文件,现象依旧。考虑可能不是操作系统的差异了。
重新使用ghex打开jpeg数据查看,发现显示正常,为”ffd8 ffc0 0011
0804″和 “ffd9 0a”,正确。
   
估计应该是vim的问题了。
3f的ascii码是?,那表示vim对文件头、尾没有正常解析,是不是和vim解析文件时用的编码格式有关系呢?
打开.vimrc配置项,屏蔽掉下面这句话:
set fileencodings=utf-8,gb2312,gbk,gb18030,ucs-bom
再用vim打开jpeg文件,显示”ffd8 ffc0 0011 0804″和 “ffd9 0a”,
显示正确。
原来,为了支持识别和显示中文,我规定了vim的fileencodings,
当vim打开文件时,会使用规定的编码格式对数据进行解析,可惜jpeg的文件头FFD8、尾FFD9
不是任何一个中文的编码,vim找不到对应的中文字,就显示为??,即:3f3f。
至此,困惑全部打开。

时间: 2024-08-10 15:11:50

vim修改二进制文件的相关文章

mac中使用vi修改二进制文件

mac中使用vi修改二进制文件 1.首先以二进制方式编辑这个文件vi -b datafile 2.使用xxd转换为16进制:%!xxd 文本看起来像这样: 0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI 0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0 0000020: 373b 2731 0b22 0ca6 c1a2 d669 1

【转】vim修改文件格式,查看不可见字符串等

vim修改文件格式,查看不可见字符等 分类: 兵器谱2013-10-29 22:26 2125人阅读 评论(0) 收藏 举报 :set fileformats=unix,dos ==>unix文件格式作为第一选择,dos格式作为第二选择,尤其需要注意的是shell.python等脚本需要保存为unix格式,因为不然你在linux下直接运行时会提示:No such file or directory,因为Linux把换行符也当成脚本解释器的一部分了. :set fileformat ==>查看文

vim编辑二进制文件

vim编辑二进制文件 第一步.以二进制方式打开文件 [[email protected] tmp]# vim -b tree-1.6.0-10.el7.x86_64.rpm 第二步.扩展命令模式下,利用xxd命令转换为可读的十六进制 :%!xxd 第三步.插入模式下,编辑二进制文件 第四步.扩展命令模式下,利用xxd命令转回二进制 :%!xxd -r 第五步.保存退出 # 破坏文件 [[email protected] tmp]# echo >> tree-1.6.0-10.el7.x86_6

Linux下dd和od命令备份查看硬盘mbr,并用vim修改!

主引导记录(Master Boot Record,MBR),位于一个硬盘的0柱面.0盘面.1扇区,共512字节.具体划分依次为:引导代码区440字节.磁盘签名4字节.空白(Ox0000)2字节.MBR分区表(Disk Partition Table,DPT)64字节.结束标志(Ox55AA)2字节.其中的MBR分区表(DPT)区别于另一种“全局唯一标识分区表(GUID Partition Table,GPT)”.本文今天仅讨论MBR及DPT. 废话不多说了,下面先介绍如何备份.恢复MBR及DPT

【转】vim 修改tab为四个空格

原文网址:http://blog.sina.com.cn/s/blog_620ccfbf01010erz.html 为了vim更好的支持python写代码,修改tab默认4个空格有两种设置方法: 1. vim /etc/vimrc 1 set ts=4 2 set sw=4 2. vim /etc/vimrc 1 set ts=4 2 set expandtab 3 set autoindent 推荐使用第二种,按tab键时产生的是4个空格,这种方式具有最好的兼容性. 在 Vim 中设置 Tab

LINUX vim 修改文件 退出

vim 保存退出, 先按ESC ,然后:wq(保存退出)W:write,写入 Q:quit,退出, 也可以直接输入X,代表WQ,也是保存退出 或者 先按ESC,再按shift+ZZ 也是保存退出 正常退出,就是文件没有修改过的退出 按了ESC后再输入冒号,在输入命令时,直接输入"q", 不保存退出: 先按ESC,再输入冒号,在输入命令时,直接输入"q!" 强制退出: 先按ESC,再按冒号,在输入命令时,直接输入"!" 但退出后,会有提示! ,不建

vim修改配色方案

先看看vim编辑器提供的色彩配置方案: 首先进入vim的color目录(/usr/share/vim72/colors,不同的系统目录不同,建议在-/建立.vim目录,然后在些目录里建立对应的文件夹和文件) $ ls /usr/share/vim/vim62/colors blue.vim      delek.vim    evening.vim  murphy.vim     README.txt  torte.vim darkblue.vim  desert.vim   koehler.v

vim修改文字编码

在Vim中查看文件编码 :set fileencoding 即可显示文件编码格式.如果你只是想查看其它编码格式的文件或者想解决 用Vim查看文件乱码的问题,那么在~/.vimrc 文件中添加以下内容: set encoding=utf-8 fileencodings=utf-8 这样,就可以让vim自动识别文件编码(可以自动识别UTF-8或 者GBK编码的文件),其实就是依照fileencodings提供的编码列表尝试,如果没有找到合适 的编码,就用latin-1(ASCII)编码打开. 以指定

ubuntu 下vim修改tab键为4个空格

vim /etc/vim/vimrc   添加如下3行: set ts=4   set expandtab   set autoindent