Linux Bash:進制間轉換

今天寫腳本,須要用到把10進制數轉換成16進制數。網上搜了一下瞬間就獲得了答案。bash

有三種方法,echo,printf,bc 等命令。我認爲,最經常使用的應該是10進制與16進制轉換,因此printf應該是最簡單直觀的,並且語法很C同樣,記住這個就好。最強大的bc,能夠任意轉換。ui

1. echo,printf

# 二進制轉十進制
echo $[2#1100]
echo $((2#1100))

# 十六進制轉十進制
echo $[16#ff]
printf %d 0xac

# 八進制轉十進制
echo $[8#100]

# 十進制轉十六進制
printf %x 172  複製代碼

2. bc 命令

格式爲:echo "obase=16 ; ibase=2 ; number" | bc ,其中obase表明輸出進制,ibase表明輸入進制,number表示ibase進制對應的數字。spa

注意:爲10時可不設置ibase obase的值,obase要儘可能放在ibase前,由於ibase設置後,後面的數字都是以ibase的進制來換算的。同時16進制字母必須大寫。
code

echo "ibase=16;obase=2;FFEE" | bc  

echo "ibase=8;obase=2;67"  |  bc  

echo "obase=16;base=2;11001111"  |  bc  

# 同時轉換2個數字
echo "obase=16;ibase=2;11001111;0101100111001111"  |  bc  複製代碼
相關文章
相關標籤/搜索