shell中二进制、十进制、十六进制等进制转换

Shell脚本中数值都是默认按照十进制处理的,除非这个数值做了特殊标记,如:以 0 开头就是 8 进制数,以0x 开头就是16 进制数。

1. 二进制、八进制、十六进制等转化为十进制

另外 BASE#NUMBER 这种形式可以表示其它进制,BASE值:2 ~ 64。

2. 使用bc工具来进行进制转换

我的经验是:一般先设置obase,再设置ibase,这样的话obase/ibase都可以按照默认的十进制来设置;否则先设置的ibase会对后面设置的obase参数生效(这个要注意)。

ibase 设置 input base,必须是 2 ~ 16 之间的数字;对于十六进制,ABCDEF等字母要大写。

obase 设置 output base,2-16进制就用普通的表示方法,如果大于16,则用多个字符来表示一个数字,数字之间用空格间隔。

3. 使用printf来进行8、10、16进制的转化
printf也是可以用来进行简单的进制转换的;它不支持输出二进制。

master

Stay hungry, stay foolish.

发表评论

邮箱地址不会被公开。 必填项已用*标注

*