在Linux Shell中將十六進位制轉換為ASCII字元
簡介
如果一個數字系統以16為基數表示,則它被認為是十六進位制。在本文中,我們將學習如何在Linux Shell中將十六進位制轉換為ASCII。十六進位制系統使用數字和字母字元的組合,如下所示:
0 1 2 3 4 5 6 7 8 9 A B C D E F
大型數字系統最適合使用十六進位制數字系統,因為它可以儲存和表達長的二進位制資料。由於總共使用16個符號(數字和字母,從0到F)來表示此係統,因此它被稱為base16。
透過其字元編碼標準**ASCII**,或**美國資訊交換標準程式碼**,實現了電子通訊。因此,此標準負責在計算機和電信裝置等技術中表示文字。
例如,如果您想將使用者簡歷轉換為ASCII格式,則最終產品將是純文字,沒有任何文字樣式,例如製表符、粗體或下劃線。計算機可以快速處理這種原始格式。它還可以簡化其他應用程式匯入和/或使用最終文件。
Linux 最棒的一點是,我們只需要使用命令就能完成大部分任務。字元轉換就是一個很好的例子。
在本簡短教程中,我們將介紹幾種從命令列將十六進位制字元轉換為ASCII的方法。
用例
讓我們以以下十六進位制字元為例:
54 54 75 74 6F 72 69 61 6C 73 20 50 6F 69 6E 74 75 74 6F 72 69 61 6C 73 20 50 6F 69 6E 74
上述十六進位制字元的等效ASCII字元表示理論上為:
Tutorials Point
我們將研究幾種基於Linux的方法來達到上述解決方案。
方法1:使用printf命令
printf 命令根據指定的格式化資料格式來格式化和列印資料輸入。
我們可以使用此命令將十六進位制字元轉換為ASCII字元:
$ printf '\x54 \x75 \x74 \x6F \x72 \x69 \x61 \x6C \x73 \x20 \x50 \x6F \x69 \x6E \x74' && echo ''
$ printf '\x54 \x75 \x74 \x6F \x72 \x69 \x61 \x6C \x73 \x20 \x50 \x6F \x69 \x6E \x74' && echo '' Output: T u t o r i a l s P o i n t
在這個例子中,我們只是用 \x 格式說明符來表示十六進位制數字。
方法2:使用echo和xxd命令
xxd 命令主要用於建立取樣十六進位制字元的十六進位制轉儲,或反轉上述操作。首先,echo 命令將接收取樣十六進位制字元作為輸入,然後將其傳遞給 xxd 命令,後者將將其轉換為 ASCII 字元。
$ echo 54 75 74 6F 72 69 61 6C 73 20 50 6F 69 6E 74 | xxd -r -p && echo ''
$ echo 54 75 74 6F 72 69 61 6C 73 20 50 6F 69 6E 74 | xxd -r -p && echo '' Output: Tutorials Point
以下是命令的分解:
-r - 將十六進位制字元轉換為ASCII
-p - 將輸出以純文字格式列印
echo - 將在Linux終端上產生一個新行
方法3:使用sed命令
在列印最終輸出之前,sed 命令透過傳遞正則表示式進行轉換,用於過濾和轉換十六進位制字元輸入到 ASCII 字元。
我們使用管道來透過 echo 收集雜湊字串,透過 sed 轉換為給定的表示式,並獲得如下所示的輸出。
$ echo -n 5475746F7269616C7320506F696E74 | sed 's/\([0-9AF]\{2\}\)/\\\x\1/gI' | xargs printf && echo ''
$ echo -n 5475746F7269616C7320506F696E74 | sed 's/\([0-9AF]\{2\}\)/\\\x\1/gI' | xargs printf && echo '' Output: Tutorials Point
方法4:使用dc命令
或者,我們可以使用 dc 命令將十六進位制字元轉換為 ASCII 字元。dc 是 Desk Calculator 的縮寫。此命令接受字尾表示法的輸入。
在這種情況下,16i 表示您正在處理十六進位制基數,而 P 則列印 dc 命令的輸出。
$ echo "16i 5475746F7269616C7320506F696E74 P" | dc
$ echo "16i 5475746F7269616C7320506F696E74 P" | dc Output: Tutorials Point
由於轉換後的輸出缺少換行符,因此它與終端中的提示符混合在一起,如上所示。您可以向上面的命令新增“**echo**”以使其更易讀。
$ echo "16i 5475746F7269616C7320506F696E74 P" | dc && echo''
$ echo "16i 5475746F7269616C7320506F696E74 P" | dc && echo'' Output: Tutorials Point
方法5:使用perl命令
使用perl,我們可以輕鬆地將十六進位制資料轉換為ASCII格式。讓我們在您的Linux終端上執行以下命令。
$ echo 5475746F7269616C7320506F696E74 | perl -ne 's/([0-9a-f]{2})/print chr hex $1/gie' && echo ''
$ echo 5475746F7269616C7320506F696E74 | perl -ne 's/([0-9a-f]{2})/print chr hex $1/gie' && echo '' Output: Tutorials Point
結論
在本文中,我們研究了將十六進位制字元轉換為ASCII的幾個實際示例。我們從 printf 和 echo 命令的示例開始。然後我們執行了 dc 命令。最後,我們看到了 perl 命令的實際應用。我們可以使用這些命令來提高我們日常工作效率。這些是在Linux shell中將十六進位制轉換為ASCII字元的有效方法。
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP