有没有一种简单的方法可以使用 Python 处理二进制文件?
我有一个正在接收的数据文件(以 1 和 0 的形式)并且想扫描它并查找二进制中的某些模式。它必须是二进制的,因为由于我的系统,我可能会偏离 1 位左右,这会在转换为十六进制或 ascii 时抛出所有问题。
例如,我想打开文件,然后搜索“0001101010111100110”或一些二进制字符串,让它告诉我它是否存在于文件中,它在哪里等。
这是可行的还是我最好使用另一种语言?
要将字节字符串转换为 '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:
您最好使用另一种语言。Python 可以做到(例如,如果你使用 file = open("file", "wb")
(附加 b 以二进制形式打开它),然后使用简单的搜索,但老实说,使用 C 等低级语言更容易、更快捷。