linux極簡小知識:30、shell中不同進位制的表示和之間的轉換(十進位制、八進位制、十六進位制、二進位制、任意進位制)
highlight: agate theme: channing-cyan
小知識,大挑戰!本文正在參與“程式設計師必備小知識”創作活動。
數值的進位制
Bash中數值預設都是十進位制的。
如果想要使用不同的進位制,可採用下面的表示形式:
number
:沒有任何特殊表示法的數字是十進位制數。0number
:數字0開頭,表示八進位制數。0xnumber
:數字0x開頭,表示十六進位制數。base#number
:base進位制的數,通過base指定是幾進位制。由此,可以表示任意的進位制。
比如下面幾種進位制:
sh
$ let a=100
$ let b=0100
$ let c=0x100
$ let d=2#100
$ echo "a=$a,b=$b,c=$c,d=$d"
a=100,b=64,c=256,d=4
也可以使用
(())
獲取進位制值。
進位制轉換
其他進位制轉十進位制
其他進位制轉十進位制不需要特殊處理,獲取值的,其表示形式就是10進位制。
接上面的 a、b、c、d 變數。如下,檢視其取值時為10進位制:
sh
$ let b10=b
$ let c10=c
$ let d10=d
$ echo $b10
64
$ echo $c10
256
$ echo $d10
4
十進位制轉其他進位制
十進位制轉其他進位制需要藉助 bc 命令。指定 obase 為幾進位制。
如下,十進位制分別轉8、16、2進位制。
sh
$ echo "obase=8;$b10" | bc
100
$ echo "obase=16;$c10" | bc
100
$ echo "obase=2;$d10" | bc
100
其他進位制間的轉換
同樣藉助 bc 命令
sh
$ echo "obase=2;$c10" | bc
100000000
「其他文章」
- 兩篇吃透按鍵事件:你應該瞭解的js鍵盤事件和使用注意事項
- Electron無法從淘寶映象下載安裝,報錯HTTPError Response code 404 (Not Found)的問題
- SSIS學習使用十五:SSIS引數概述,專案引數,包引數及使用包引數構建動態屬性
- SSIS學習使用十四:專案轉換概述和轉換包部署模型為專案部署模型
- SSIS學習使用十三:SSIS變數概述:變數的介紹使用、斷點和狀態,指定了多個內碼表(1252和936)錯誤
- SSIS學習使用十一:日誌(Logging)
- SSIS學習使用十:高階事件行為
- SSIS學習使用九:控制流任務錯誤處理
- SSIS學習使用八:高階SSIS工作流管理
- SSIS學習使用七:中級SSIS工作流管理
- SSIS學習使用六:基本的SSIS工作流管理和指令碼任務介紹
- SSIS學習使用五:Integration Services增量載入之刪除資料
- 關於HTML中table的幾個關鍵點,你應該知道的
- CSS實現井字棋盤效果的N種方法【如何實現只有內部邊框的table】
- 記一次抽風的[email protected] Permission denied (publickey)問題【所有可能的解決辦法和問題請教】
- SSIS學習使用四:Integration Services增量載入之更新資料
- SSIS學習使用三:Integration Services增量載入之新增資料
- SSIS學習使用二:最基本的資料流任務(處理流程)
- linux極簡小知識:44、檢視文字檔案內容的正確姿勢(下)—— more和less命令的用法和區別!
- 為什麼、在哪以及如何使用.NET配置檔案?