Python-十六进制、二进制互转

Python-十六进制转二进制

hex_tuple = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F')
repair_list = []
binary_list = []


def check_str():
    """检验所输入字符串是否为十六进制字符,且不区分大小写"""
    input_str = input('请输入待转十六进制数:')
    frist_deal = input_str.upper()
    for s in frist_deal:
        if s in hex_tuple:
            pass
        else:
            print('所输入的内容有误,验证失败!')
            return
    print('验证成功,所输入字符串为:%s' % frist_deal)
    return frist_deal


def change_chars():
    """将十六进制中的字符转化为十进制的字符"""
    hex_list = [str(p) for p in check_str()]
    # print(hex_list)
    for u in hex_list:
        if u == 'A':
            i = hex_list.index('A')
            hex_list[i] = '10'
        elif u == 'B':
            i = hex_list.index('B')
            hex_list[i] = '11'
        elif u == 'C':
            i = hex_list.index('C')
            hex_list[i] = '12'
        elif u == 'D':
            i = hex_list.index('D')
            hex_list[i] = '13'
        elif u == 'E':
            i = hex_list.index('E')
            hex_list[i] = '14'
        elif u == 'F':
            i = hex_list.index('F')
            hex_list[i] = '15'
        else:
            pass
    return hex_list


# print(change_chars())


def hex_binary():
    """将十六进制转成二进制,不足四位补零"""
    num_list = [int(k) for k in change_chars()]
    for j in num_list:
        while True:
            if j != 1:
                n = j % 2
                repair_list.append(n)
                j //= 2
            elif j == 1:
                repair_list.append(1)
                repair_list.reverse()
                if len(repair_list) % 4 == 0:
                    pass
                elif len(repair_list) % 4 == 1:
                    repair_list.insert(0, 0)
                    repair_list.insert(1, 0)
                    repair_list.insert(2, 0)
                elif len(repair_list) % 4 == 2:
                    repair_list.insert(0, 0)
                    repair_list.insert(1, 0)
                elif len(repair_list) % 4 == 3:
                    repair_list.insert(0, 0)
                binary_list.extend(repair_list)
                repair_list.clear()
                break

    return binary_list


def print_binary():
    binary_str = [str(h) for h in hex_binary()]
    binary_int = int(''.join(binary_str))
    print("所输入十六进制数转成二进制数为:%d" % binary_int)
    binary_list.clear()


print_binary()

Python-二进制转十六进制

input_str = input('请输入待转二进制数:')

input_list = []
list_cut = []
list_deal = []


def binary_hex():
    # 将字符串逐个添加至列表
    for i in input_str:
        input_list.append(i)

    # print(input_list)

    # 不足补零
    if len(input_list) % 4 == 0:
        pass
    elif len(input_list) % 4 == 1:
        input_list.insert(0, '0')
        input_list.insert(1, '0')
        input_list.insert(2, '0')
    elif len(input_list) % 4 == 2:
        input_list.insert(0, '0')
        input_list.insert(1, '0')
    elif len(input_list) % 4 == 3:
        input_list.insert(0, '0')

    # print(input_list)

    # 字符串切片
    y = 0
    while y < len(input_list):
        list_cut.append(input_list[y: (y + 4)])
        y += 4
    input_list.clear()
    # print(list_cut)

    num = 0
    t = 3

    for k in list_cut:
        for p in k:
            num += int(p) * 2 ** t
            t -= 1
        list_deal.append(num)
        num = 0
        t = 3
    list_cut.clear()
    # print(list_deal)

    # 转换字符
    list_str = [str(u) for u in list_deal]
    list_deal.clear()
    for r in list_str:
        if r == '10':
            o = list_str.index('10')
            list_str[o] = 'A'
        elif r == '11':
            o = list_str.index('11')
            list_str[o] = 'B'
        elif r == '12':
            o = list_str.index('12')
            list_str[o] = 'C'
        elif r == '13':
            o = list_str.index('13')
            list_str[o] = 'D'
        elif r == '14':
            o = list_str.index('14')
            list_str[o] = 'E'
        elif r == '15':
            o = list_str.index('15')
            list_str[o] = 'F'

    # print(list_str)

    # 以字符串形式输出
    end_str = ''.join(list_str)
    list_str.clear()
    print("所输入的二进制数转化为十六进制数为:%s" % end_str)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值