先用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。
至此,困惑全部打开。

最新文章

  1. 『AngularJS』$location 服务
  2. 了解HTML CSS布局(层叠样式表)
  3. C#获取CSV文件内容对逗号和引号分隔的处理
  4. completed solution matches microsoft sequential workflow tutorial
  5. Android读取自定义View属性
  6. Java Switch(String)
  7. oracle索引、 管理权限和角色
  8. 使用Html.fromHtml将html格式字符串应用到textview上面
  9. Java 8 简明教程
  10. 非常不错的MySQL优化的8条经验
  11. [编织消息框架][netty源码分析]10 ByteBuf 与 ByteBuffer
  12. 《JAVA程序设计》第13周学习总结
  13. 怎么解决dede首页网址自动加上index.html
  14. js在工作中遇到的一些问题
  15. shell:bash环境
  16. Swift变量名的一种玩法
  17. UE4 行为树资料
  18. c# maiform父窗体改变动态的gridew 奇偶行变色的快捷方法
  19. 自学Python4.7-生成器(方式一:生成器函数)
  20. 抓包工具 GOOGLE

热门文章

  1. Git学习——撤销修改
  2. C盘清理小技巧
  3. django 常见过滤器
  4. 【18】什么是FOUC?如何避免
  5. pycharm调整字体大小
  6. 在后台编辑器Text和Visual切换时,部分代码丢失的解决方法
  7. hdu 1848 sg——dfs&&打表双实现
  8. 九度oj 题目1120:全排列
  9. nginx的详解(三)
  10. 【转】Eric's并发用户数估算与Little定律的等价性