python - 将二进制转换为十六进制

标签 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
    rlist=rlist[::-1]
    for idx, val in enumerate(rlist):
        rlist[idx] = symdict.get(val, str(val))

    print(''.join(rlist))

intToHex(4512)

示例输出:11A0

如何在不使用将二进制转换为十六进制的内置函数的情况下创建函数。是否可以为此目的修改我上面的函数?

最佳答案

由于您已经将 int 转为 hex,这里有一些二进制字符串例程:

代码:

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

关于python - 将二进制转换为十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42430487/

相关文章:

python - 谁能告诉我这个函数的递归部分是如何工作的?

python - 按第二个空格拆分字符串

c - 如何测试零是否已更改为一(而不是相反)

java - 如何将二进制字符串转换为使用 UTF-8 编码的 Java 字符串

c++ - Utf-8 编码 visual studios 十进制值

python - 对于这个递归代码,为什么 Python 2.7 不会给出堆栈溢出错误,而 3.5 会?

python - 在 Tkinter 中为框架添加标签会忽略框架的属性

Ruby:为什么这个二进制文件中有一个字母?

python - 打印十六进制字符串

java - 打印十六进制字符串的地址而不是十六进制字符串值