Python将二进制字符串转换为十六进制

78 投票
13 回答
255548 浏览
提问于 2025-04-15 18:04

我想知道怎么把一个二进制字符串转换成对应的十六进制值,在Python中该怎么做?

我有一个二进制字符串0000 0100 1000 1101,我想得到它的十六进制表示048D,我使用的是Python 2.6。

13 个回答

27

使用Python的binascii模块

import binascii

binFile = open('somebinaryfile.exe','rb')
binaryData = binFile.read(8)

print binascii.hexlify(binaryData)
35

当然可以!请看下面的内容:

这个问题是关于如何在编程中处理某些特定的情况。提问者想知道在某种情况下,程序应该如何反应,或者说应该采取什么样的措施来解决问题。

通常,程序员会遇到各种各样的挑战,比如代码出错、功能不正常等等。在这种情况下,了解如何调试和解决问题是非常重要的。

提问者可能会提供一些代码示例,帮助大家更好地理解问题所在。通过这些示例,其他人可以看到具体的代码是如何工作的,以及在什么情况下会出现问题。

总之,这个讨论的重点是如何在编程中应对特定的挑战,并找到合适的解决方案。

bstr = '0000 0100 1000 1101'.replace(' ', '')
hstr = '%0*X' % ((len(bstr) + 3) // 4, int(bstr, 2))
98

这里讲的是如何把数字转换成不同的进制,首先是二进制(base 2),然后是十六进制(hex):

>>> int('010110', 2)
22
>>> hex(int('010110', 2))
'0x16'
>>> 

>>> hex(int('0000010010001101', 2))
'0x48d'

关于 int 的说明:

int(x[, base]) -> integer

Convert a string or number to an integer, if possible.  A floating

如果你给的参数是小数,它会被直接截断到零(这不包括小数点后面的部分!)。在把字符串转换成数字时,可以选择进制。如果你给的不是字符串,提供进制就是错误的。如果进制是零,系统会根据字符串的内容来猜测正确的进制。如果给的数字超出了整数的范围,系统会返回一个长整型对象。

关于 hex 的说明:

hex(number) -> string

Return the hexadecimal representation of an integer or long

这个函数是用来处理整数的。

撰写回答