Python 将二进制转换为十六进制

Python 将二进制转换为十六进制,python,binary,hex,Python,Binary,Hex,我试图创建一个函数,它接受二进制字符串并将其转换为十六进制。到目前为止,我只能创建一个可以将int转换为十六进制的函数 以下是我所拥有的: def intToHex(num): num = abs(num) symdict={10:"A",11:"B",12:"C",13:"D",14:"E",15:"F"} rlist=[] while(num!=0): rlist.append(num%16) num//=16 rlis

我试图创建一个函数,它接受二进制字符串并将其转换为十六进制。到目前为止,我只能创建一个可以将int转换为十六进制的函数

以下是我所拥有的:

def intToHex(num):
    num = abs(num)
    symdict={10:"A",11:"B",12:"C",13:"D",14:"E",15:"F"}
    rlist=[]
    while(num!=0):
        rlist.append(num%16)
        num//=16
    rlist=rlist[::-1]
    for idx, val in enumerate(rlist):
        rlist[idx] = symdict.get(val, str(val))

    print(''.join(rlist))

intToHex(4512)
样本输出:
11A0


如果不使用将二进制转换为十六进制的内置函数,如何生成函数。是否可以为此修改我上面的函数?

您可以在现有函数中添加一些代码,首先将二进制转换为Int,然后将Int转换为十六进制(您的代码),或者开发一些逻辑来直接将二进制转换为十六进制。

因为您已经将Int转换为十六进制了,以下是一些二进制字符串例程:

代码:

def bin_to_int(bin):
    return sum([(1 << i) for i, c in enumerate(reversed(bin)) if c == '1'])

def int_to_bin(num):
    bin = ''
    while num:
        bin = '01'[num & 1] + bin
        num = num >> 1
    return bin
print(bin_to_int('1001'))
print(int_to_bin(bin_to_int('1001')))
9
1001
产生:

def bin_to_int(bin):
    return sum([(1 << i) for i, c in enumerate(reversed(bin)) if c == '1'])

def int_to_bin(num):
    bin = ''
    while num:
        bin = '01'[num & 1] + bin
        num = num >> 1
    return bin
print(bin_to_int('1001'))
print(int_to_bin(bin_to_int('1001')))
9
1001

我写的这个函数来自我的库。这个库称为libZ库。此函数可以将百万位十六进制数字转换为二进制,并且仅限于Python允许字符串的长度

如果您想了解函数是如何工作的,我写了一篇非常详细的文章,主题是将十六进制转换为二进制。你可以在网站上找到这篇文章

def binhexZ(无效):
wmap={“0000”:“0”,
"0001": "1",
"0010": "2",
"0011": "3",
"0100": "4",
"0101": "5",
"0110": "6",
"0111": "7",
"1000": "8",
"1001": "9",
“1010”:“A”,
“1011”:“B”,
“1100”:“C”,
“1101”:“D”,
“1110”:“E”,
“1111”:“F”
}
i=0
output=“”
而(len(invalue)%4!=0):
无效=“0”+无效
而(i
本质上,您要问的是如何将以n为基数的数字转换为以m为基数的数字。在你的回答中,你从10分打到了16分。您需要将其更改为基数2到基数16。基本上,您已经完成了一半的逻辑:)