进制转换的实现(自己编写的小程序)



前言

作为一个python新手小白,今天写了一个有意思的进制转换的小程序,在这里分享给各位爱学习的小伙伴们!


一、为啥要写这个程序呢?

我们都知道,其实python其实是自带有进制转换函数的,bin#(10进制转2进制),oct#(10进制转8进制),hex#(10进制转16进制),写这个程序的主要目的在于掌握函数的运用和流程控制!所以希望大佬莫要喷我,说“小题大做哦”!


二、代码!!!

 


代码示范:

# 定义一个进制输出函数
def output_arrwy(a):
    for i in a:
        print(i,end="")

# 定义一个10进制转2进制函数
def two_transfer(x):
    a = []
    while x != 0:
        a.append(x%2)
        x =int(x/2)
    a.reverse()
    output_arrwy(a)

# 定义一个10进制转8进制函数
def eight_transfer(x):
    a = []
    while x != 0:
        a.append(x%8)
        x =int(x/8)
    a.reverse()
    output_arrwy(a)

# 定义一个10进制转16进制函数
def sixteen_transfer(x):
    a = []
    while x != 0:
        a.append(x%16)
        x = int(x/16)
    a.reverse()
    i = 0
    b = len(a)
    while i <= b - 1:
        if a[i] == 10:
            a[i] = 'A'
        elif a[i] == 11:
            a[i] = 'B'
        elif a[i] == 12:
            a[i] = 'C'
        elif a[i] == 13:
            a[i] = 'D'
        elif a[i] == 14:
            a[i] = 'E'
        elif a[i] == 15:
            a[i] = 'F'
        i += 1
    print(a)
    for k in a:
        print(k, end="")

#  定义一个2进制转16进制函数
def two_transfer_sixteen(x):
    li = list(str(x))
    print(li)
    i = 0
    b = len(li)
    sum = 0
    while i <= b-1:
        sum += int(li[i]) * 2**(b-i-1)
        i +=1
    print(sum)
    sixteen_transfer(sum)

#  定义一个2进制转8进制函数
def two_transfer_eight(x):
    li = list(str(x))
    print(li)
    i = 0
    b = len(li)
    sum = 0
    while i <= b - 1:
        sum += int(li[i]) * 2 ** (b - i - 1)
        i += 1
    print(sum)
    eight_transfer(sum)

print("欢迎使用mc开发的程序!".center(50, '*'))
a = []
s = int(input("请输入需要转换的 2进制 or 10进制数s:"))
t = int(input("请输入需要转换的进制(2,8,16,28,216) t:"))
if t == 2:
    two_transfer(s)
elif t == 8:
    eight_transfer(s)
elif t == 16:
    sixteen_transfer(s)
elif t == 28:
    two_transfer_eight(s)
elif t == 216:
    two_transfer_sixteen(s)
else:
    print("你的输入有错误")
print("\n")
print("感谢使用mc开发的程序!".center(60, '*'))

这段代码能够实现的功能有:将10进制数转换为2、8、16进制数,同时也能够将2进制数转换为8、16进制,代码中的算法不难看明白,适用于各种刚刚开始学习python的小伙伴们哦!

程序执行结果如下:

#2进制的执行
*******************欢迎使用mc开发的程序!*******************
请输入需要转换的 2进制 or 10进制数s:12345
请输入需要转换的进制(2,8,16,28,216) t:2
11000000111001

************************感谢使用mc开发的程序!************************



#16进制的执行
*******************欢迎使用mc开发的程序!*******************
请输入需要转换的 2进制 or 10进制数s:9999999
请输入需要转换的进制(2,8,16,28,216) t:16
[9, 8, 9, 6, 7, 'F']
98967F

************************感谢使用mc开发的程序!************************


#2进制转16进制的执行
*******************欢迎使用mc开发的程序!*******************
请输入需要转换的 2进制 or 10进制数s:1314999
请输入需要转换的进制(2,8,16,28,216) t:216
['1', '3', '1', '4', '9', '9', '9']
271
[1, 0, 'F']
10F

************************感谢使用mc开发的程序!************************

可以看到如果使用python自带的函数,可能会带有前缀ob、ox等,而且16进制转换后是小写的abcdef,小编写的这一程序可实现大写输出,还是有优点的哦!

# 调用python自带的函数转换16进制

print(hex(9999999))


>> 0x98967f  #执行的结果


三、总结

这是小编第一次在CSDN上发表文章,希望能够得到各位小伙伴的支持哦!小编先谢谢大家啦!有啥问题可以留言询问哦!

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值