使用 bc 命令进行进制转换

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

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

如果 ibase 和 obase 不指定,则默认是 10 进制。

一般先设置 obase,再设置 ibase,否则先设置的 ibase 会对后面设置的 obase 参数生效,有可能会导致结果与预期不符,后面有示例。

示例如下:

1、10 进制转 2 进制

$ echo "obase=2;1024" | bc

10000000000

2、10 进制转 8 进制

$ echo "obase=8;16" | bc

3、10 进制转 16 进制

$ echo "obase=16;32" | bc

4、10 进制转 base64

$ echo "obase=64;12345" | bc

03 00 57

6、2 进制转 16 进制

$ echo "obase=16; ibase=2; 11111111"|bc

7、先设置 ibase,再设置 obase 的问题,

$ echo "ibase=2;obase=16; 11111111"|bc

100110

为啥结果是 100110,而不是 FF,因为 ibase=2 对 obase=16 生效了,那 16 的 10 进制结果是 1 * 2 + 1 * 1(6 > 2,变成 2 - 1),变成 obase=3,所以其实是以 3 进制输出的结果,可以验证下,

$ echo "obase=3;ibase=2; 11111111"|bc

100110

如果先设置 obase=16,再设置 ibase=2,则结果符合预期,

$ echo "obase=16;ibase=2; 11111111"|bc

Understand "ibase" and "obase" in case of conversions with bc? - Unix & Linux Stack Exchange

linux 数字 进制转换 文章目录 linux 数字 进制转换 一、简介二、简易 换2.1 各种进制 10进制 2.2 10进制 各种进制三、通用 换 这里介绍 linux ,数值各种进制的相互 换。 二、简易 换 2.1 各种进制 10进制 格式:echo $((base#number)) 其 base的范围为2都64 #2进制 10进制 echo $((2#1101)) #8进制 1...
使用到的控件: 1、Input Widgets -> Line Edit (用于输入十进制数,个数为1) 这里控件命名为input 2、Buttons -> Push Button (用于设置按键, 换为十六、八或二进制数, 个数为3)分别命名为p_16 p_8 p_2 3、Display -> Text Browser (用于显示...
八进制 十进制: [chengmo@centos5 ~]$ ((num=0123));[chengmo@centos5 ~]$ echo $num;83 [chengmo@centos5 ~]$ ((num=8#123));[chengmo@centos5 ~]$ echo $num;83 ((表达式)),(())里面可以是任意数据表达式。如果前面...
Linux 进制转换 通常通过命令行工具完成,特别是`bc`计算器或者内置的一些 换函数。以下是两个常见的 进制转换 方法: 1. 使用`bc`计算器:你可以打开终端,输入类似下面的命令来进行 换: - `echo "ibase=10;obase=2;10" | bc` 将十进制数10 换成二进制 - `echo "ibase=2;obase=10;1101" | bc` 将二进制数1101 换成十进制 2. 内置函数:一些现代 Linux 发行版的bash shell提供了`digit`或`printf`等内置函数。例如: - `digit -d 10 -b` 或 `printf "%b\n" 10` (取决于你的系统版本) 将十进制数 二进制 - `digit -o 1101` 或 `printf "%d\n" 1101` 换为十进制 如果你需要编写脚本来批量处理 进制转换 ,可以查阅 Linux 相关的教程或使用Python、Perl等编程语言编写程序。 CSDN-Ada助手: 恭喜你开始博客创作!标题为“Linux 中的进制转换”的博客听起来很有趣。学习和理解进制转换是我们在Linux系统中必不可少的一部分。希望你能够深入浅出地介绍不同进制之间的转换原理,并给出实际应用的例子。此外,你还可以探索一些进制转换工具或技巧,帮助读者更好地理解和应用这个概念。期待你的下一篇博客! 推荐【每天值得看】:https://bbs.csdn.net/forums/csdnnews?typeId=21804&utm_source=csdn_ai_ada_blog_reply1 如果您持续创作,完成第三篇博客,并且质量分达到 80 分以上,在评论区就有机会获得红包奖励哦!