为什么在Vim中查看十六进制与hexdump结果不同?

问题描述 投票:2回答:1

我有一个hex文件,想检查它的内容。当我使用hexdump时,它看起来像这样:

tomxue@tom-Hasee:~/workspace$ hexdump spi.pcm | head
0000000 fedf fef4 fed9 fed4 ff10 fe99 fffe ffcd
0000010 ff3a ff39 ff54 fe5b fe80 ff0a 0004 ffd3
0000020 feaa ff11 feb2 fef6 fea8 fec2 0004 ffd1
0000030 ff1b fe9b fed6 fe4e fe46 fe9b fffc ffcf
0000040 ff26 fe95 feb4 fde5 fe69 fe95 ffff ffd0
0000050 fede ff73 fea2 fe36 fe7f fe99 0001 ffd5
0000060 ff98 ff08 ff05 feff fe90 ff1a fffe ffd2
0000070 ff48 ff07 ff39 fed6 fee1 fee9 fff7 ffd2
0000080 ffa6 ff93 ffbb ff29 ffa4 ffaf 0002 ffd1
0000090 0014 ffff fff4 0037 ffd2 ffcb 0007 ffd0

但是在vim中使用命令:%!xxd,它看起来像这样:

  0000000: 3f3f 3f3f 3f3f 3f3f 103f 3f3f 3f3f 3f3f  ????????.???????
2 0000010: 3a3f 393f 543f 5b3f 3f3f 0a3f 0400 3f3f  :?9?T?[???.?..??
3 0000020: 3f3f 113f 3f3f 3f3f 3f3f 3f3f 0400 3f3f  ??.?????????..??    
4 0000030: 1b3f 3f3f 3f3f 4e3f 463f 3f3f 3f3f 3f3f  .?????N?F???????    
5 0000040: 263f 3f3f 3f3f 3f3f 693f 3f3f 3f3f 3f3f  &???????i???????    
6 0000050: 3f3f 733f 3f3f 363f 7f3f 3f3f 0100 3f3f  ??s???6?.???..?? 

为什么?据我所知,hexdump结果应该是正确的,为什么vim结果看起来像那样?

更多:下面的命令给hexdump一个提供相同的结果,而在vim中执行的xxd会得到不同的结果。怎么了?

tomxue@tom-Hasee:~/workspace$ xxd spi.pcm | head
0000000: dffe f4fe d9fe d4fe 10ff 99fe feff cdff  ................
0000010: 3aff 39ff 54ff 5bfe 80fe 0aff 0400 d3ff  :.9.T.[.........
0000020: aafe 11ff b2fe f6fe a8fe c2fe 0400 d1ff  ................
0000030: 1bff 9bfe d6fe 4efe 46fe 9bfe fcff cfff  ......N.F.......
0000040: 26ff 95fe b4fe e5fd 69fe 95fe ffff d0ff  &.......i.......
0000050: defe 73ff a2fe 36fe 7ffe 99fe 0100 d5ff  ..s...6.........
0000060: 98ff 08ff 05ff fffe 90fe 1aff feff d2ff  ................
0000070: 48ff 07ff 39ff d6fe e1fe e9fe f7ff d2ff  H...9...........
0000080: a6ff 93ff bbff 29ff a4ff afff 0200 d1ff  ......).........
0000090: 1400 ffff f4ff 3700 d2ff cbff 0700 d0ff  ......7.........

tomxue@tom-Hasee:~/workspace$ od -x spi.pcm | head
0000000 fedf fef4 fed9 fed4 ff10 fe99 fffe ffcd
0000020 ff3a ff39 ff54 fe5b fe80 ff0a 0004 ffd3
0000040 feaa ff11 feb2 fef6 fea8 fec2 0004 ffd1
0000060 ff1b fe9b fed6 fe4e fe46 fe9b fffc ffcf
0000100 ff26 fe95 feb4 fde5 fe69 fe95 ffff ffd0
0000120 fede ff73 fea2 fe36 fe7f fe99 0001 ffd5
0000140 ff98 ff08 ff05 feff fe90 ff1a fffe ffd2
0000160 ff48 ff07 ff39 fed6 fee1 fee9 fff7 ffd2
0000200 ffa6 ff93 ffbb ff29 ffa4 ffaf 0002 ffd1
0000220 0014 ffff fff4 0037 ffd2 ffcb 0007 ffd0
vim hex
1个回答
0
投票

如果你的.vimrc文件配置如下:

set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936

删除它或删除fileencodings配置。 因为vim会根据它的设置顺序猜测打开文件的编码。(也许,vim不知道原始二进制文件的编码是什么)。

© www.soinside.com 2019 - 2024. All rights reserved.