Python中常见的实现进制转换怎样做
Admin 2022-09-29 群英技术资讯 1279 次浏览
在实际应用中,我们有时候会遇到“Python中常见的实现进制转换怎样做”这样的问题,我们该怎样来处理呢?下文给大家介绍了解决方法,希望这篇“Python中常见的实现进制转换怎样做”文章能帮助大家解决问题。其中比较常用到的是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()
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)))
在format中加上b,o,x将其他进制的转换为二进制、八进制或者是十六进制
if __name__ == '__main__':
print("{:b}".format(int(input(), 8)))
print("{:o}".format(int(input(), 8)))
print("{:x}".format(int(input(), 8)))
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))
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])))
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
针对大家在Python中常常遇到字符串拼接的问题,本文主要向大家介绍Python中常见的六种拼接方法:加号法、逗号法、直接拼接法、格式化法、join函数法、多行字符串拼接法。详情如下:
在嵌入式开发中我们经常会用到串口,串口通信简单,使用起来方便,且适用场景多。本文为大家准备了Python实现串口通信的示例代码,需要的可以参考一下
经常出现在网页上的基于JavaScript实现的弹出框有三种,分别是 alert、confirm、prompt 。本文主要是学习如何利用selenium处理这三种弹出框,感兴趣的可以了解一下
这篇文章介绍了Python的序列化模块JSON与Pickle,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
在本篇文章里小编给大家整理了一篇关于Python 解决空列表.append() 输出为None的问题的相关内容,有兴趣的朋友们可以学习下。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008