今天写脚本,需要用到把10进制数转换成16进制数。网上搜了一下瞬间就得到了答案。
有三种方法,echo,printf,bc 等命令。我认为,最常用的应该是10进制与16进制转换,所以printf应该是最简单直观的,而且语法很C一样,记住这个就好。最强大的bc,可以任意转换。
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进制对应的数字。
注意:为10时可不设置ibase obase的值,obase要尽量放在ibase前,因为ibase设置后,后面的数字都是以ibase的进制来换算的。同时16进制字母必须大写。
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