Linux中如何將檔案dump成16進製制值

2022-08-31 07:48:09 字數 1606 閱讀 4727

linux中有多種方式可以將檔案dump成16進製制顯示,也可以將16進製制值再反向成檔案。

$ hexdump test.txt

0000000 524f 2d41 3030 3036 0a30 524f 2d41 3030

0000010 3630 0a30                             

0000014

$ od -x test.txt

0000000 524f 2d41 3030 3036 0a30 524f 2d41 3030

0000020 3630 0a30

0000024

$ xxd test.txt

0000000: 4f52 412d 3030 3630 300a 4f52 412d 3030  ora-00600.ora-00

0000010: 3036 300a                     060.

注意到hexdumpod出來的結果都是按實際儲存的位元組序,因為基於x86的linux是little-endian的,也就是高低位元組是顛倒了的。但是xxd的結果是將位元組序調整過了的。而ibm的power cpu是big-endian的,所以在aix上od的結果如下:

$od -x test.txt

0000000  4f52 412d 3030 3630 300a 4f52 412d 3030

0000020  3036 300a

0000024

xxd還可以實現從16進製制反向生成檔案,只需要加上-r選現即可。

xxd test.txt | xxd -r

ora-00600

ora-00060

$ echo 0000000: 4f52 412d 3030 3630 300a 4f52 412d 3030 | xxd -r

ora-00600

ora-00

但是要注意xxd接受的是big-endian格式的16進製制值,如果輸入的是little-endian的,則生成的檔案字元(包括換行符)是兩兩顛倒的。

$ od -x test.txt | xxd -r

ro-a0006

0ro-a0060

0在vi編輯器中可以使用:%!xxd呼叫xxd來將檔案轉換成16機制編輯模式,編輯完成後再呼叫:%!xxd -r轉換檔案模式,從而使得vi具有16進製制編輯的功能,:%!其實就是呼叫外部shell命令,需要注意的是xxd的位元組序是big-endian的,不要搞錯了。

如果你的linux系統中找不到xxd命令,那麼檢查下是否有安裝vim-common

rpm -qa | grep vim

vim-enhanced-6.3.046-0.40e.7

vim-x11-6.3.046-0.40e.7

vim-minimal-6.3.046-0.40e.7

vim-common-6.3.046-0.40e.7

Linux中如何將檔案dump成16進製制值

在linux中有多種方式可以將檔案dump成16進製制顯示,也可以將16進製制值再反向成檔案。hexdump test.txt 0000000 524f 2d41 3030 3036 0a30 524f 2d41 3030 0000010 3630 0a30 0000014 od x test.tx...

如何將Unicode文字寫到日誌檔案中

有時為了定位問題,我們需要結合列印日誌來處理。特別是較難復現的,一般都需要檢視上下文日誌才能找出可能存在的問題。考慮到程式要在不同語言的作業系統上執行,程式介面顯示要支援unicode,列印出來的日誌也要支援unicode,即將執行日誌以unicode文字寫到日誌檔案中。那麼如何才能將unicode...

如何將Unicode文字寫到日誌檔案中

有時為了定位問題,我們需要結合列印日誌來處理。特別是較難復現的,一般都需要檢視上下文日誌才能找出可能存在的問題。考慮到程式要在不同語言的作業系統上執行,程式介面顯示要支援unicode,列印出來的日誌也要支援unicode,即將執行日誌以unicode文字寫到日誌檔案中。那麼如何才能將unicode...