歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> 使用Shell進行進制轉換

使用Shell進行進制轉換

日期:2017/3/1 14:42:36   编辑:SHELL編程
使用Shell進行進制轉換 假定在您的腳本中有一些數字,您需要以另外的進制處理這些數字。使用 Shell 運算可以很容易地自動實現這類轉換。一種情況是使用 Shell 運算把一個數字從給定的進制轉換位十進制。如果數字以運算展開式的形式提供,那麼假定它帶有十進制符號,除非 它前面帶有 0(這種情況假定是八進制)或 0x(這種情況假定是十六進制)。鍵入以下內容以得到一些八進制和十六進制值的十進制輸出: $ echo $((013)) $ echo $((0xA4)) 您還可以使用以下格式指定 2 到 64 之間的任意進制: $((BASE#NUMBER)) 通過在 Shell 提示符後鍵入清單 7 中所示的行,嘗試將二進制、八進制、十六進制以及其他進制的數轉換為十進制。 清單 7. 在 Shell 中將任意進制的數以十進制輸出 echo $((2#1101010)) echo $((8#377)) echo $((16#D8)) echo $((12#10)) echo $((36#ZZYY)) 使用 bc 進行進制轉換 在 Shell 中進行進制轉換的另一個訣竅是使用 bc,它是一種任意精度運算語言,大多數 UNIX/Linux 安裝程序都提供。因為它允許您指定輸出進制,所以當您需要以十進制以外的進制輸出時,這是一種很好的技術。 bc 的特殊變量 ibase 和 obase 分別包含用於輸入和輸出的進制的值。缺省情況下,都被設置為 10。要執行進制轉換,需要改變其中的一個或兩個值,然後提供一個數字。立即嘗試,如清單 8 中所示。 清單 8. 使用 bc 執行進制轉換 $ bc -ql 10 10 obase=16 10 A ibase=2 10 2 要快速執行進制轉換,可以聯合使用 bc 和 echo形成快捷的單命令行程序,將給定的值通過管道傳輸給 bc。鍵入清單 9 中顯示的內容。 清單 9. Shell 單命令行 bc 程序 $ echo 'obase=16; 47' | bc 2F $ echo 'obase=10; ibase=16; A03' | bc 2563 警告:當您設置 bc 的輸入進制以後,輸入 bc 的所有數字都使用該進制,包括您提供用於設置輸出進制的數字。因此最好先設置輸出進制,否則可能會產生意想不到的結果,如清單 10 中所示。 清單 10. 設置輸入和輸出進制的先後順序的重要性 $ echo 'ibase=16; obase=10; A' | bc A $ echo 'ibase=16; obase=A; A' | bc 10
Copyright © Linux教程網 All Rights Reserved