擁有一堆十六進製字符並希望將它們轉換為可讀的十進制 (ASCII)?
有多種方法可以將十六進制轉換為 ASCII Linux。 如果需要,您還可以在 shell 腳本中使用這些方法。
將十六進制轉換為 ASCII Linux
十六進制是一種數字系統,其中使用數字 (0-9) 的組合來表示 0 到 9 的值,使用字母 (AF) 的組合來表示 10 到 15 的值。
這聽起來可能很複雜,但它仍然比一切都是 1 和 0 的二進制編號要好。
幾十年前,十六進制已廣泛應用於微控制器中。 您仍然可以看到它在使用中,尤其是用於表示各種顏色深淺的十六進制調色板。
另一方面,ASCII 代表美國信息交換標準代碼,其用例與十六進製完全不同。 ASCII 是一種將普通語言字符轉換為二進制的方法,以便計算機可以理解我們這邊的指令。
在本指南中,我將介紹幾種可以輕鬆將十六進制轉換為 ASCII 的方法。
考慮我要轉換的以下十六進制代碼(問題陳述):
4c696e757868616e64626f6f6b20313233
如果我設法轉換上述十六進制代碼,則 ASCII 轉換應如下所示:
Linuxhandbook 123
方法一:使用xxd命令
xxd 是一個命令行實用程序,可以從給定文本創建十六進制轉儲,反之亦然。
首先,我將使用 echo 命令輸入一個十六進製字符串,並使用管道將其與 xxd 配對。
echo 4c696e757868616e64626f6f6b20313233 | xxd -r -p
這裡,-r命令選項用於將十六進制代碼轉換為ASCII,-p用於打印純文本。
[email protected]:~$ echo 4c696e757868616e64626f6f6b20313233 | xxd -r -p
Linuxhandbook [email protected]:~$
正如您在上面看到的,輸出與終端中的提示混合在一起,因為轉換後的輸出沒有換行符。 為了使其更具可讀性,您可以添加 echo ''
到上一個命令。
echo 4c696e757868616e64626f6f6b20313233 | xxd -r -p && echo ''
方法二:使用printf命令
是的,您可以使用以下命令將十六進制轉換為 ASCII bash 命令 printf。 在這裡,我將使用 x 選項,它將接受 1 或 2 位數字輸入,如下所示:
printf 'x4cx69x6ex75x78x68x61x6ex64x62x6fx6fx6bx20x31x32x33'
如果你在十六進製字符串的末尾得到一個數字,那就沒有問題,並且它會正常工作,如圖所示。
方法三:使用dc命令
您可能想知道我們如何使用封面計算器 (dc) 將十六進制轉換為 ASCII,我將向您展示具體的操作方法。
echo "16i 4C696E757868616E64626F6F6B20313233 P" | dc
這裡, 16 我 用於指示它是十六進制根,並且 聚酰亞胺 用於打印 dc 命令的輸出。
使用上述命令,您將獲得類似於以下內容的輸出:
方法四:使用Perl命令
因此,如果您的系統安裝了 Perl,則可以使用此方法輕鬆將十六進制轉換為 ASCII。 只需在給定命令中將我的十六進制代碼與您的十六進制代碼交換即可。
echo 4c696e757868616e64626f6f6b20313233 | perl -ne 's/([0-9a-f]{2})/print chr hex $1/gie' && echo ''
您將看到如下所示的結果:
方法五:使用sed命令
此方法與上面的方法有點相似,但這裡使用 sed 使用正則表達式過濾十六進制並將其轉換為 ASCII。
echo -n 4c696e757868616e64626f6f6b20313233 | sed 's/([0-9A-F]{2})/\\\x1/gI' | xargs printf && echo ''
使用管道,我們通過 echo 收集哈希字符串,通過將 sed 與給定表達式匹配來轉換它,並獲得指示的輸出。
方法 6:轉換存儲在文本文件中的十六進製字符串
因此,如果文本文件中存儲有十六進製字符串,則可以使用此方法將存儲的十六進製字符串轉換為 ASCII。
我的十六進製字符串存儲在 hex.txt 文件中,因此要轉換該字符串,我必須遵循給定的命令:
cat hex.txt | xxd -r -p && echo ''
這是迄今為止最方便的方法,因為您不必一遍又一遍地輸入十六進製字符串,最好的部分是您可以存儲多個十六進製字符串並使用相同的命令轉換它們。
這是我對如何使用各種方法將十六進製字符串轉換為 ASCII 的看法。 到目前為止,最後一個是我最喜歡的,因為與其他一個相比,它非常有效。
有專門的十六進制編輯器 Linux 如果你願意的話你也可以嘗試一下。