我需要将字符串data = "00000111010110101"
转换为十六进制字符串,在这个例子中我需要'075A80'
您可能会注意到一些警告:
- 不应去除前导零,因此 hex(int(data,2)) 对我不起作用
- 如果 len(data) %8 != 0 字符串应附加零以以完整字节结尾
在搜索了这个论坛并将不同的答案组合在一起之后,这是我发现的一种方法,但它似乎相当复杂,我希望其他人看到一个更简单的方法。
data_hex = "".join([ "%02X" % int("".join(a),2) for a in izip_longest(*(iter(data),)*8, fillvalue='0')])
谢谢!
编辑:数据的一些背景。底层数据是纯位,它不代表整数或其他数值,因此前导零是相关的,必须在结果中表示。在(右)端添加零也不会改变我的用例中的“值”。