在Python中操作二进制数据

2024-06-14 22:54:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在打开一个二进制文件,如下所示:

file = open("test/test.x", 'rb')

并逐行阅读清单。每一行看起来都有点像:

'\xbe\x00\xc8d\xf8d\x08\xe4.\x07~\x03\x9e\x07\xbe\x03\xde\x07\xfe\n'

我很难处理这些数据。如果我尝试打印每一行,python就会冻结,并发出哔哔声(我认为在某个地方有一个二进制哔哔声代码)。如何安全地使用这些数据?如何将每个十六进制数转换为十进制数?


Tags: 文件数据test二进制openfilex00x03
3条回答

^{} is the character with hex value hh。其他字符如.和`~'是普通字符。

对字符串进行迭代,一次一个地给出字符串中的字符。

^{} will return an integer representing the character.例如,ord('A') == 65

这将打印每个字符的十进制数:

s = '\xbe\x00\xc8d\xf8d\x08\xe4.\x07~\x03\x9e\x07\xbe\x03\xde\x07\xfe\n'
print ' '.join(str(ord(c)) for c in s)

要打印它,可以执行以下操作:

print repr(data)

就整个事情而言:

print data.encode('hex')

对于每个字节的十进制值:

print ' '.join([str(ord(a)) for a in data])

要从数据中解包二进制整数等,就像它们最初来自C风格的结构一样,请查看struct模块。

就像剧院提到的,奥德和海克斯可能会帮助你。 如果您想尝试解释文件中的某种结构化二进制数据,struct模块可能会有所帮助。

相关问题 更多 >