从十六进制值转换为二进制值

Vis*_*hnu 3 binary hex type-conversion python-2.7

正在将一个值从十六进制转换为二进制值。我使用了 python 的 bin() ,如下所示:

value = 05808080
print bin(int(value, 16))

output i got is 0b101100000001000000010000000(output should be 32 bit)
output should be 0000 0101 1000 0000 1000 0000 1000 0000(correct output)
Run Code Online (Sandbox Code Playgroud)

输出中的这个“b”是什么以及如何用正确的二进制值替换它。我认为这里的两个值几乎相同,除了输出中“b”的问题。我将如何解决这个问题?

tob*_*s_k 5

您得到的输出是正确的,只需稍微格式化一下即可。前导0b表示它是一个二进制数,类似于0x十六进制和0八进制的表示方式。

首先,去掉0bwith[2:]并使用 usezfill添加前导零:

>>> value = '05808080'
>>> b = bin(int(value, 16))
>>> b[2:]
'101100000001000000010000000'
>>> b[2:].zfill(32)
'00000101100000001000000010000000'
Run Code Online (Sandbox Code Playgroud)

最后,以四个字符为间隔分割字符串并用空格连接:

>>> s = b[2:].zfill(32)
>>> ' '.join(s[i:i+4] for i in range(0, 32, 4))
'0000 0101 1000 0000 1000 0000 1000 0000'
Run Code Online (Sandbox Code Playgroud)

如果您可以没有这些分隔符空格,您还可以使用格式字符串

>>> '{:032b}'.format(int(value, 16))
'00000101100000001000000010000000'
Run Code Online (Sandbox Code Playgroud)