实现进制转换有很多方法,比如awk,bc(这个功能很好,很强大),自己实现等等。
shell的一种用法:
$((base#number))
其中number是欲转化的数,base是其进制数.(base也可省略,number默认是十进制,如果以0,或0x则分别是八进制和十六进制).比如:
#echo $((012))
#echo $((0xAF))
#echo $((2#1101010))
#echo $((8#377))
#echo $((16#D8))#有base不用0x,不然报错!8进制没问题,weird!
另外这个用法还可以扩展:
$((base#number^base#Base1))#这种情况是把number以Base1为基进行取反操作:
#base=1f
#Base1=ff
#echo $((16#$base^16#$Base1))
224
|
awk实现十进制到十六进制转化(八进制是%o):
#echo "123456"|awk '{printf "%x\n",$0}'
1e240
bc实现各种进制之间的转化:
#echo 'ibase=16; obase=10; A' | bc
A
|
阅读(1144) | 评论(0) | 转发(0) |