使用 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助手: