脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - python中常见进制之间的转换方式

python中常见进制之间的转换方式

2023-02-11 11:10yuzhang_zy Python

这篇文章主要介绍了python中常见进制之间的转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

1. 很多情况下需要进行不同进制之间的转换

其中比较常用到的是python的内置函数进行进制的转换,一般使用内置函数进行转换的时候是先将控制台输入的字符串或者是自定义的字符串先转换为10进制然后将10进制转换为其他的进制,常见的是二进制、十进制、八进制、十六进制之间的转换,其中遵循一个原则是:

其他进制转为十进制使用int函数,其他进制转为二进制使用bin函数,其他进制转为八进制使用oct函数,其他进制转为十六进制转为hex函数,并且是借助于10进制作为中间的桥梁进行转换,也就是使用到int()函数,

下面的表格反应了常见进制之间的转换

并且转换为对应的权重之后对应的字符串会有相应的前缀,二进制前缀为0b,八进制前缀为0o,十六进制前缀为0x 

  2进制 8进制 10进制 16进制
2进制 - bin(int(input(),8)) bin(int(input(),10)) bin(int(input(),16))
8进制 oct(int(input(), 2)) - oct(int(input(),10)) oct(int(input(),16))
10进制 int(input(),2)) int(input(),8) - int(input(),2)
16进制 hex(int(input(), 2)) hex(int(input(),8)) hex(int(input(),10)) -

使用内置函数的时候反正是转换为哪一个进制就使用一个进制对应的函数即可,中间需要先转换为十进制(int()函数),其中进制转换涉及到的内置函数有:2进制:bin(),8进制:oct(),10进制:int(),16进制:hex()

?
1
2
3
4
5
6
if __name__ == '__main__':
    # input接收到的是字符串, 使用int函数定义输入的是什么进制的字符串转换为10进制数字
    print(bin(int(input(), 16)))
    print(int(input(), 10))
    print(oct(int(input(), 10)))
    print(hex(int(input(), 10)))

2. 第二种是使用format函数进行转换

在format中加上b,o,x将其他进制的转换为二进制、八进制或者是十六进制

?
1
2
3
4
if __name__ == '__main__':
    print("{:b}".format(int(input(), 8)))
    print("{:o}".format(int(input(), 8)))
    print("{:x}".format(int(input(), 8)))

3. 手动转化

10进制转换为其他进制代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution:
    # 将十进制数字转换为任意的进制(1-16)
    def decimalToAny(self, decimal: int, x: int):
        remainder = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"]
        # 当n大于0的时候执行循环
        res = ""
        while decimal:
            res = remainder[decimal % x] + res
            decimal //= x
        return res
 
if __name__ == '__main__':
    decimal, x = map(int, input().split())
    print(Solution().decimalToAny(decimal, x))

其他的进制转为10进制代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Solution:
    # 快速幂: x ** n
    def quickPower(self, x: int, n: int):
        res = 1
        while n > 0:
            if n % 2 == 1:
                res *= x
            x *= x
            n //= 2
        return res
 
    def anyToDecimal(self, s: str, base: int):
        n = len(s)
        res = 0
        for i in range(n):
            # 数字, ord函数获取字母的ascii值
            if "0" <= s[i] <= "9":
                res += (ord(s[i]) - ord("0")) * self.quickPower(base, n - i - 1)
            # 16进制数字对应的权重
            elif "a" <= s[i] <= "f":
                res += (ord(s[i]) - ord("a") + 10) * self.quickPower(base, n - i - 1)
            else:
                res += (ord(s[i]) - ord("A") + 10) * self.quickPower(base, n - i - 1)
        return res
 
if __name__ == '__main__':
    li = input().split()
    print(Solution().anyToDecimal(li[0], int(li[1])))

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

原文链接:https://blog.csdn.net/qq_39445165/article/details/114539697

延伸 · 阅读

精彩推荐
  • PythonUbuntu下升级 python3.7.1流程备忘(推荐)

    Ubuntu下升级 python3.7.1流程备忘(推荐)

    这篇文章主要介绍了Ubuntu下升级 python3.7.1流程备忘,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    码农陆蜀黍6992021-04-27
  • PythonPython将多个excel文件合并为一个文件

    Python将多个excel文件合并为一个文件

    这篇文章主要为大家详细介绍了Python将多个excel文件合并为一个文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    Jepson201715642020-12-31
  • Pythonpython中的各种运算符介绍

    python中的各种运算符介绍

    这篇文章主要介绍了python中的各种运算符,主要包括内容有比较运算符、​赋值运算符、位运算符、逻辑运算符、​成员运算符的相关介绍,需要的小伙伴...

    小5聊基础4802022-12-02
  • Python一文解决django 2.2与mysql兼容性问题

    一文解决django 2.2与mysql兼容性问题

    Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。这篇文章主要介绍了解决django 2.2与mysql兼容性问题,需要...

    segmentfault5292020-07-16
  • PythonPython timeit模块的使用实践

    Python timeit模块的使用实践

    timeit 模块是 Python 标准库中的模块,无需安装,直接导入就可以使用。这篇文章主要介绍了Python timeit模块的使用,需要的朋友可以参考下 ...

    Python碎片3712020-04-26
  • PythonPython面向对象编程之继承与多态详解

    Python面向对象编程之继承与多态详解

    这篇文章主要介绍了Python面向对象编程之继承与多态,结合实例形式详细分析了Python面向对象编程中继承与多态的概念、使用方法及相关注意事项,需要的朋...

    feesland8152021-01-05
  • PythonPython微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例

    Python微信企业号开发之回调模式接收微信端客户端发送消息及被

    这篇文章主要介绍了Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息的方法,涉及Python微信企业号回调模式消息响应机制相关操作...

    偅唻姒後6252020-12-03
  • PythonPython使用matplotlib绘制随机漫步图

    Python使用matplotlib绘制随机漫步图

    这篇文章主要为大家详细介绍了使用Python生成随机漫步数据,使用matplotlib绘制随机漫步图,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    youaresherlock7142021-03-30