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  复制代码
相关文章
相关标签/搜索