vim修改二進位檔案

來源:互聯網
上載者:User

vim修改二進位檔案 先用vim以二進位格式開啟需要編輯或查看的檔案,不採用-b參數有時會導致轉換錯誤,詳見分隔線後部分。  www.2cto.com  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  .......%..%.. ..現在就可以對待普通文本一樣查看和編輯二進位檔案了。修改十六進位內容是不會導致右側字元改變;其實右側的文本只是給你參考的,修改了再將十六進位轉換回二進位,這些修改都會忽略。  www.2cto.com  修改完成使用xxd把十六進位轉換回二進位::%!xxd -r只有十六進位的修改會生效。****************分**********隔**********線**************** VIM顯示十六進位出錯在linux下用vim開啟jpg檔案,使用%!xxd進行16進位顯示時,檔案頭顯示為”3f3f3f3f 0011 0804″檔案尾端顯示為 “3f3f0a”;而同樣的操作在windows下,就顯示為”ffd8 ffc0 0011 0804″和 “ffd90a”,這才是正確的jpeg檔案頭和檔案尾標誌。很蹊蹺 !初時,我以為是jpeg在windows和linux下是不同的檔案頭,後來把jpg尾碼去掉,就一個純檔案,現象依舊。考慮可能不是作業系統的差異了。重新使用ghex開啟jpeg資料查看,發現顯示正常,為”ffd8 ffc0 00110804″和 “ffd9 0a”,正確。  www.2cto.com  估計應該是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。至此,困惑全部開啟。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.