linux下如何进制的相互转换

 更新时间:2024年11月29日 14:23:59   作者:零时搞学习  
文章介绍了Linux Shell和Python中不同进制(二进制、八进制、十进制、十六进制)的转换方法,包括前缀和转换工具的使用

linux下进制的相互转换

linux下十六进制,十进制,八进制,二进制的相互转换

不同进制的特殊符号

如下:

  • 二进制:数字前缀为0b0B,字符集为01
  • 八进制:数字前缀为0o(零),字符集为07
  • 十进制:没有数字前缀,字符集为09
  • 十六进制:数字前缀为0x0X,字符集为09AF(大小写都可以)。

下面是一些示例:

  • 二进制数字1101可以表示为0b11010B1101
  • 八进制数字16可以表示为0200o20,其中前缀0表示它是一个八进制数字。
  • 十进制数字42不需要前缀。
  • 十六进制数字1A可以表示为0x1A0X1a

需要注意的是:

  • 在编写程序时,应在数字前加上正确的前缀,以明确数字的进制。
  • 否则,计算机可能会将它们解释为不同进制的数字。

在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下对进制的转换方法。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • ubuntu下安装程序的三种方法总结(推荐)

    ubuntu下安装程序的三种方法总结(推荐)

    下面小编就为大家带来一篇ubuntu下安装程序的三种方法总结(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Canonical通过Flutter启用Linux桌面应用程序(推荐)

    Canonical通过Flutter启用Linux桌面应用程序(推荐)

    这篇文章主要介绍了Canonical通过Flutter启用Linux桌面应用程序,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Linux下网络接口重命名方式

    Linux下网络接口重命名方式

    本文详细介绍了现代Linux系统中网络接口命名的变化,包括从传统的eth0到可预测的eno1、enp0s3、ens33等命名方案,文章还探讨了自定义网络接口名称的必要性及常见方法,如通过GRUB内核参数方式和udev规则自定义命名,此外,还提供了详细的步骤和最佳实践建议
    2026-03-03
  • Linux 下载安装VSCode 使用编程输出当前时间的方法

    Linux 下载安装VSCode 使用编程输出当前时间的方法

    这篇文章主要介绍了Linux 下载安装VSCode 使用编程输出当前时间,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • linux lvm快照的正确mount挂载实现方式

    linux lvm快照的正确mount挂载实现方式

    这篇文章主要介绍了linux lvm快照的正确mount挂载实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • 使用命令行检测Ubuntu版本方法

    使用命令行检测Ubuntu版本方法

    在本篇文章中小编给大家整理了关于使用命令行检测Ubuntu版本方法和相关代码,有兴趣的朋友们学习下。
    2019-03-03
  • expect命令在linux下实现批量ssh免密

    expect命令在linux下实现批量ssh免密

    本次文章主要给大家讲解了在linux系统下用expect命令实现批量ssh免密的实现方法,以及实际代码分享。
    2017-11-11
  • 使用htaccess规范化网址的配置

    使用htaccess规范化网址的配置

    使用htaccess规范化网址,提高程序的运行效率。
    2010-02-02
  • CentOS7增加Swap空间的两种方法

    CentOS7增加Swap空间的两种方法

    当服务器物理内存不足时,增加Swap空间可以作为虚拟内存使用,帮助系统处理内存压力,本文给大家介绍了CentOS7增加Swap空间的两种方法:创建新的Swap文件和调整Swap分区大小,需要的朋友可以参考下
    2025-05-05
  • Ubuntu18.04一次性升级Python所有库的方法步骤

    Ubuntu18.04一次性升级Python所有库的方法步骤

    这篇文章主要介绍了Ubuntu18.04一次性升级Python所有库的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01

最新评论