linux下如何进制的相互转换
作者:零时搞学习
文章介绍了Linux Shell和Python中不同进制(二进制、八进制、十进制、十六进制)的转换方法,包括前缀和转换工具的使用
linux下进制的相互转换
linux下十六进制,十进制,八进制,二进制的相互转换
不同进制的特殊符号
如下:
- 二进制:数字前缀为
0b
或0B
,字符集为0
和1
。 - 八进制:数字前缀为
0o
(零),字符集为0
到7
。 - 十进制:没有数字前缀,字符集为
0
到9
。 - 十六进制:数字前缀为
0x
或0X
,字符集为0
到9
和A
到F
(大小写都可以)。
下面是一些示例:
- 二进制数字
1101
可以表示为0b1101
或0B1101
。 - 八进制数字
16
可以表示为020
或0o20
,其中前缀0
表示它是一个八进制数字。 - 十进制数字
42
不需要前缀。 - 十六进制数字
1A
可以表示为0x1A
或0X1a
。
需要注意的是:
- 在编写程序时,应在数字前加上正确的前缀,以明确数字的进制。
- 否则,计算机可能会将它们解释为不同进制的数字。
在linux shell上进行进制转换
各进制转10进制:
方法一:echo $((现在的进制#原始值))
#2进制数转10进制数 root@unassigned:/# echo $((2#1011)) 11 #8进制数转10进制数 root@unassigned:/# echo $((8#13)) 11 #16进制数转10进制数 root@unassigned:/# echo $((16#B)) 11
方法二:echo ‘ibase=现在的进制;原始值’ | bc
#8进制数转10进制数 root@unassigned:~/test# echo 'ibase=8;120' | bc 80 #16进制数转10进制数 root@unassigned:~/test# echo 'ibase=16;50' | bc 80 #2进制数转10进制数 root@unassigned:~/test# echo 'ibase=2;1010000' | bc 80
进阶
利用bc实现各进制相互转换
echo “obase=目标进制; ibase=原始进制; $((原始值))” | bc
#十进制值转换为八进制 root@unassigned:~/test# echo "obase=8; ibase=10; $((120))" | bc 170 #十进制转换为十六进制 root@unassigned:~/test# echo "obase=16; ibase=10; $((120))" | bc 78 #十进制转换为二进制 root@unassigned:~/test# echo "obase=2; ibase=10; $((120))" | bc 1111000 #八进制转换为二进制 root@unassigned:~/test# echo "obase=2; ibase=8; $((170))" | bc 1111000 #八进制转换为十进制 root@unassigned:~/test# echo "obase=10; ibase=8; $((170))" | bc 120 #八进制转换为十六进制 root@unassigned:~/test# echo "obase=16; ibase=8; $((170))" | bc 78 #二进制转换为八进制 root@unassigned:~/test# echo "obase=8; ibase=2; $((1111000))" | bc 170 #二进制转换为十进制 root@unassigned:~/test# echo "obase=10; ibase=2; $((1111000))" | bc 120 #二进制转换为十六进制 root@unassigned:~/test# echo "obase=16; ibase=2; $((1111000))" | bc 78 #十六进制转换为二进制 root@unassigned:~/test# echo "obase=2; ibase=16; $((78))" | bc 1111000 #十六进制转换为八进制 root@unassigned:~/test# echo "obase=8; ibase=16; $((78))" | bc 170 #十六进制转换为十进制 root@unassigned:~/test# echo "obase=10; ibase=16; $((78))" | bc 120
以上简单介绍了shell下的进制转换,下面再讲一下Python中的进制转换:
在python3中有以下进制转换的方式,分别对应不同的进制
十六进制hex()
,十进制int()
,八进制oct()
,二进制bin()
值得注意的是,python更加灵活,其值也需要用对应的前缀进行辨别
比如:
- 十六进制数:
0xAA
- 十进制数:
10
- 八进制数:
0o20
- 二进制数:
0b110
以上四种进制,除了十进制无前缀,其余进制均有其前缀进行辨别,如0x
,0o
,0b
转换效果展示:
>>> hex(120) '0x78' >>> hex(0o170) '0x78' >>> hex(0b1111000) '0x78' >>> int(0x78) 120 >>> oct(0x78) '0o170' >>> bin(0x78) '0b1111000'
就不完全一一列举了,以上就是linux shell下和python3下对进制的转换方法。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。