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也会以某种方式更改文件.
这是为什么?我怎样才能防止它发生?难道我做错了什么?
显然,如果您不打算将任何内容更改为文件,则可以退出vim使用:q!.
作为@RunHolt指出,vim并xxd可以改变一个二进制文件.例如,将LF更改为CRLF或在文件末尾附加LF字符.
您可以通过设置binary选项来防止这种情况:
以文件开头vim:vim -b filename或:set binary在将文件加载到缓冲区之前键入.