如果与xxd一起使用,则修改文件

gca*_*ali 4 vim mp3 raw-data xxd

我试图理解ID3标签是如何工作的,因此,在阅读了一些文档之后,我开始查看一些mp3的原始数据.Vim通常是我的首选编辑器,因此,经过一些谷歌搜索,我发现我可以使用xxd通过调用来查看我的文件的十六进制表示

:%!xxd  
Run Code Online (Sandbox Code Playgroud)

一切都很好,但是当我把所有东西都整理好了

:%!xxd -r  
Run Code Online (Sandbox Code Playgroud)

然后退出,我发现该文件已被修改; vlc再也无法播放了,差异告诉我文件不同.我以为我偶然修改了一些东西,但进一步的实验表明,即使打开文件并使用xxd然后xxd -r也会以某种方式更改文件.

这是为什么?我怎样才能防止它发生?难道我做错了什么?

Pet*_*den 7

显然,如果您不打算将任何内容更改为文件,则可以退出vim使用:q!.

作为@RunHolt指出,vimxxd可以改变一个二进制文件.例如,将LF更改为CRLF或在文件末尾附加LF字符.

您可以通过设置binary选项来防止这种情况:

以文件开头vim:vim -b filename:set binary在将文件加载到缓冲区之前键入.