我在 Windows 上使用 Python 3.2.3,并尝试将 C 样式 ASCII 文件中的二进制数据转换为其二进制等效项,以便以后使用 struct 模块进行解析。例如,我的输入文件包含“0x000A 0x000B 0x000C 0x000D”,我想将其转换为“\x00\x0a\x00\x0b\x00\x0c\x00\x0d”。
我遇到的问题是 Python 3 中的字符串数据类型发生了变化,并且将十六进制转换为二进制的内置函数(例如binascii.unhexlify()
)不再接受常规的 unicode 字符串,而只接受字节字符串。这种从 unicode 字符串转换为字节字符串并返回的过程让我感到困惑,所以我想知道是否有更简单的方法来实现这一点。以下是我到目前为止的内容:
with open(path, "r") as f:
l = []
data = f.read()
values = data.split(" ")
for v in values:
if (v.startswith("0x")):
l.append(binascii.unhexlify(bytes(v[2:], "utf-8").decode("utf-8")
string = ''.join(l)