今天写脚本,须要用到把10进制数转换成16进制数。网上搜了一下瞬间就获得了答案。bash
有三种方法,echo,printf,bc 等命令。我认为,最经常使用的应该是10进制与16进制转换,因此printf应该是最简单直观的,并且语法很C同样,记住这个就好。最强大的bc,能够任意转换。ui
# 二进制转十进制
echo $[2#1100]
echo $((2#1100))
# 十六进制转十进制
echo $[16#ff]
printf %d 0xac
# 八进制转十进制
echo $[8#100]
# 十进制转十六进制
printf %x 172 复制代码
格式为: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 复制代码