「Linux」- 十六进制查看编辑工具

  CREATED BY JENKINSBOT

vi/vim的十六进制模式

:%!xxd ——将当前文本转换为16进制格式。
:%!xxd -r ——将当前文件转换回文本格式。

Emacs的十六进制模式

M-x hexl-mode

od

顾名思义是查看八进制,可以通过指定参数为查看十六进制
-A 指定左边侧栏显示的地址基数,默认为八进制
-t 指定输出单元的进制格式和字节数
-x = -t x2 输出单元为双字节(注意:每单元内排列顺序从左到右为 [高字节|低字节])
例:
chenglian@chenglian-desktop:~/test$ od -t x1 asm | more
0000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
0000020 02 00 03 00 01 00 00 00 54 80 04 08 34 00 00 00

chenglian@chenglian-desktop:~/test$ od -A x -t x1 asm | more
000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
000010 02 00 03 00 01 00 00 00 54 80 04 08 34 00 00 00

chenglian@chenglian-desktop:~/test$ od -A x -x asm | more
000000 457f 464c 0101 0001 0000 0000 0000 0000
000010 0002 0003 0001 0000 8054 0804 0034 0000

hexdump

查看十六机制的首选工具。
-c 每单元以字节为单位,显示出对应的ASCII码
-C 每单元以字节为单位,同时显示十六机制和ASCII码
例:
chenglian@chenglian-desktop:~/test$ hexdump -c asm | more
0000000 177 E L F 001 001 001 /0 /0 /0 /0 /0 /0 /0 /0 /0
0000010 002 /0 003 /0 001 /0 /0 /0 T 200 004 /b 4 /0 /0 /0

chenglian@chenglian-desktop:~/test$ hexdump -C asm | more
00000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 |.ELF…………|
00000010 02 00 03 00 01 00 00 00 54 80 04 08 34 00 00 00 |……..T…4…|

xxd – make a hexdump or do the reverse

能够显示文件对应的十六机制格式,同时还能将修还后的十六进制格式反写回文件,一般与vim结合使用。(利用vim的:! 参数执行外部命令)
使用过程如下:
(1)用vim打开要查看文件
vim txtfile
(2)在vim命令模式下输入
:%!xxd
解释: %表示文件的所有行,!xxd表示执行外部命令xxd,结合在一起,就是把当前vim上显示的所有行传递给xxd,xxd把处理后的结果重新显示在vim上。
(3)这时候可以直接在上面修改十六进制值。注意:当前修改了十六进制值,右边侧栏的ASCII码并不会相应改变。
(4)修改完毕后,反写回原文件。在vim命令模式下输入
:%!xxd -r
只有十六进制的修改部分才会被采用,右边侧栏的ASCII码值忽略不管。
如果你不熟悉vim,可以参考vim自带的vimtutor,然后再参考vim cookbook ,主流的技巧就算是掌握了。
带GUI的十六进制编辑器,可以参考ghex和bless,有很多。