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)

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 7-6 jmu-python-不同进制数 在计算机中,数字可以用不同的进制表示。常见的进制有二进制、八进制、十进制和十六进制二进制是计算机中最基本的进制,只有和1两个数字。八进制是以8为基数的进制,数字由-7组成。十进制是我们平时使用的进制,数字由-9组成。十六进制是以16为基数的进制,数字由-9和A-F组成。 在Python中,可以使用不同的前缀来表示不同的进制。二进制使用b或B前缀,八进制使用o或O前缀,十六进制使用x或X前缀。 例如,二进制数1011可以表示为b1011或B1011,八进制数23可以表示为o23或O23,十六进制数AB可以表示为xAB或XAB。 在Python中,可以使用int()函数将不同进制的字符串换为十进制数,也可以使用bin()、oct()、hex()函数将十进制数换为二进制、八进制、十六进制字符串。 ### 回答2: 7-6 jmu-python-不同进制数 在计算机科学中,进制是十分重要的基础概念,同时也是一个容易引起误解的容易混淆的概念。所谓进制,就是用不同的符号来表示数字的位置、权值和位值。在我们日常使用中,最常见的是十进制。而在计算机中,除了十进制之外,还可以使用二进制、八进制和十六进制等不同的进制数来表示数字。 二进制(Binary) 二进制是计算机中最基本的进制,只有0和1两个数码,这是由于计算机中采用的是模拟现象来进行信息存储和处理。因此,只需要用0和1两种状态进行表示即可。例如,8位二进制数00000000表示数字0,11111111表示数字255。 八进制(Octal) 八进制是一种使用8个数字来进行编码的进制。在计算机科学中,八进制通常被用于Unix和Linux文件系统中的文件访问权限描述。在八进制中,数字由0到7的8个数码组成。例如数字78,在八进制中写作116(因为7×8的一次方加上8的零次方等于116),这就是为什么它被称为八进制。八进制一般使用前缀0来表示。 十六进制(Hexadecimal) 十六进制是一种使用16个数字来进行编码的进制。在计算机科学中,十六进制通常被用于颜色编码和内存地址表示。在十六进制中,数字由0到9和字母A到F(或a到f)的16个数码组成。为了便于区分,通常采用前缀0x来表示十六进制。例如数字256,在十六进制中写作0x100(因为256等于16的二次方)。 综上所述,不同进制数在计算机科学中有各自的应用,同时也提供了不同的方式来表示数字。对于程序员来说,熟练掌握各种进制数的概念和换方法具有至关重要的意义。 ### 回答3: 7-6 jmu-python-不同进制数 在计算机科学中,我们经常使用不同的进制数来表达数字和数据。在Python中,我们可以使用不同的进制数来表示整数和浮点数。本文将介绍在Python中使用的不同进制数类型和如何将它们化成十进制数。 一、二进制二进制是计算机语言中的基本进制。二进制数由0和1表示,是由计算机电路中硬件元件关系(电子电路)的最小单位表示的信息。在Python中,我们可以使用前缀“0b”来表示二进制数,例如: >>> a = 0b1010 >>> print(a) 10 >> b = 0b1101 >> print(b) 13 在上面的例子中,我们使用“0b”前缀来表示二进制数,然后将其赋值给变量a和变量b。最后,我们使用print()函数输出了它们在十进制下的值。 二、八进制数 八进制数是由0~7数字组成的数字系统。在Python中,我们可以使用前缀“0o”来表示八进制数,例如: >>> a = 0o10 >>> print(a) 8 >> b = 0o17 >> print(b) 15 在上面的例子中,我们使用“0o”前缀来表示八进制数,然后将其赋值给变量a和变量b。最后,我们使用print()函数输出了它们在十进制下的值。 三、十六进制十六进制数是由0~9和字母A~F组成的数字系统。在Python中,我们可以使用前缀“0x”来表示十六进制数,例如: >>> a = 0x10 >>> print(a) 16 >> b = 0xAB >> print(b) 171 在上面的例子中,我们使用“0x”前缀来表示十六进制数,然后将其赋值给变量a和变量b。最后,我们使用print()函数输出了它们在十进制下的值。 四、十进制数 十进制数是我们最常使用的数字系统,由0~9数字组成。在Python中,我们可以直接使用整数或浮点数来表示十进制数,例如: >>> a = 10 >>> print(a) 10 >> b = 3.14 >> print(b) 3.14 在上面的例子中,我们直接使用整数10和浮点数3.14来表示十进制数,然后通过print()函数输出它们的值。 五、不同进制数之间的化 如果我们想要将一个二进制、八进制、十六进制化成十进制数,我们可以使用int()函数将其化成整数,例如: >>> a = 0b1010 >>> print(a) 10 >> b = 0o17 >> print(b) 15 >> c = 0xAB >> print(c) 171 >> d = int('1010', 2) >> print(d) 10 >> e = int('17', 8) >> print(e) 15 >> f = int('AB', 16) >> print(f) 171 在上面的例子中,我们使用int()函数将二进制数“0b1010”化成十进制数10,将八进制数“0o17”化成十进制数15,将十六进制数“0xAB”化成十进制数171。我们也可以使用int()函数对字符串进行化,其中第二个参数表示原来数字的进制。 综上所述,Python中的不同进制数可以用来表示整数和浮点数,它们之间可以互相化。掌握这些知识对于学习计算机科学领域的相关课程有很大的帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值