linux下的二進位制檔案的編輯和檢視

2022-08-17 06:24:12 字數 1670 閱讀 2613

一、在linux下檢視二進位制檔案的軟體:

xxd (預設2進製)

hexdump  (預設16進製制,可轉其他進製) 

od (預設8進製,可轉其他進製)

1、biew

2、hexedit

3、vim

vim 來編輯二進位制檔案。vim 本非為此而設計的,因而有若干侷限。但你能讀

取乙個檔案,改動乙個字元,然後把它存檔。結果是你的檔案就只有那乙個字元給改了,

其它的就跟原來那個一模一樣。

要保證 vim 別把它那些聰明的竅門用錯地方,啟動 vim 時加上 "-b" 引數:

vim -b datafile

這個引數設定了 'binary' 選項。其作用是排除所有的意外***。例如,'textwidth'

設為零,免得文字行給擅自排版了。並且,檔案一律以 unix 檔案格式讀取。

二進位制模式可以用來修改某程式的訊息報文。小心別插入或刪除任何字元,那會讓程式運

行出問題。用 "r" 命令進入替換模式。

檔案裡的很多字元都是不可顯示的。用 hex 格式來顯示它們的值:

:set display=uhex

另外,也可以用命令 "ga"  來顯示游標下的字元值。當游標位於乙個  字元上時,

該命令的輸出看起來就像這樣:

27, hex 1b,  octal 033

檔案中也許沒那麼多換行符。你可以關閉 'wrap' 選項來獲得總覽的效果:

:set nowrap

字 節 位 置

要發現你在檔案中的當前位元組位置,請用這個命令:

g ctrl-g

其輸出十分冗長:

col 9-16 of 9-16; line 277 of 330; word 1806 of 2058; byte 10580 of 12206

最後兩個數字就是檔案中的當前位元組位置和檔案位元組總數。這已經考慮了 'fileformat'

選項導致換行符位元組不同的影響。

要移到檔案中某個指定的位元組,請用 "go" 命令。例如,要移到位元組 2345:

2345go

使 用 xxd

乙個真正的二進位制編輯器用兩種方式來顯示文字: 二進位制和十六進製制格式。你可以在 vim

裡通過轉換程式 "xxd" 來達到這效果。該程式是隨 vim 一起發布的。

首先以二進位制方式編輯這個檔案:

vim -b datafile

現在用 xxd 把這個檔案轉換成十六進製制:

:%!xxd

文字看起來像這樣:

0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49  ....9..;..tt.+ni

0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30  k,.`.....b..4^.0

0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9  7;'1.".....i.59.

現在你可以隨心所欲地閱讀和編輯這些文字了。 vim 把這些資訊當作普通文本來對待。

修改了十六進製制部分並不導致可顯示字元部分的改變,反之亦然。

最後,用下面的命令把它轉換回來:

:%!xxd -r

只有十六進製制部分的修改才會被採用。右邊可顯示文字部分的修改忽略不計。

來自為知筆記(wiz)

Linux下的二進位制檔案比較工具

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!因為要用到二進位制檔案比較工具,所以就找了一些,總結一下。0.diff 只會說 相同不或者相同 不是我要的效果。1.vimdiff b 能比較,但是顯示還是按照字元來顯示的,所以顯示基本是亂碼。2.winmerge for linux 3.ue 目...

二進位制檔案

本質上是文字檔案是把檔案資訊先轉化成以字元編碼的ascii碼,再儲存ascii的二進位制 而二進位制檔案是直接把檔案資訊編碼成二進位制儲存。因此在讀取的時候要考慮記憶體中二進位制 應該怎麼樣解釋。二進位制檔案的讀取是是要告訴元素的型別 編碼方式 文字檔案則預設為char型別。文字檔案是一種特殊的二進...

二進位制檔案

二進位制檔案 也叫型別檔案 二進位制檔案是由一批同一型別的資料組成的乙個資料序列,就是說乙個具體的二進位制檔案只能存放同一種型別的資料。type tmember record name string 10 email string 20 posts longint end var members a...