0

有没有一种简单的方法可以使用 Python 处理二进制文件?

我有一个正在接收的数据文件(以 1 和 0 的形式)并且想扫描它并查找二进制中的某些模式。它必须是二进制的,因为由于我的系统,我可能会偏离 1 位左右,这会在转换为十六进制或 ascii 时抛出所有问题。

例如,我想打开文件,然后搜索“0001101010111100110”或一些二进制字符串,让它告诉我它是否存在于文件中,它在哪里等。

这是可行的还是我最好使用另一种语言?

4

2 回答 2

4

要将字节字符串转换为 '0' 和 '1' 的字符串,可以使用以下单行:

bin_str = ''.join(bin(0x100 + ord(b))[-8:] for b in byte_str)

将其与打开和读取文件相结合:

with open(filename, 'rb') as f:
    byte_str = f.read()

现在它只是一个简单的字符串搜索:

if '0001101010111100110' in bin_str:
于 2013-04-17T22:32:47.240 回答
0

您最好使用另一种语言。Python 可以做到(例如,如果你使用 file = open("file", "wb")

(附加 b 以二进制形式打开它),然后使用简单的搜索,但老实说,使用 C 等低级语言更容易、更快捷。

于 2013-04-17T22:31:22.100 回答