首页 > 解决方案 > 向文件写入/读取位串

问题描述

我已经使用 RLE 编码了一个 8x8 的数字块,并得到了我需要写入文件的这一串位。序列的最后一个系数被相应地填充,以便整个事物可以被 8 整除。

编码系数

在上图中,您可以看到数字数组、RLE 编码(86 位长)、可被 8 整除的填充版本(88 位长)以及我要写入文件的串联字符串。

0000110010001100110110111100001000111011001100010000111101111000011000110011101000100011

编写此连接字符串的最佳方法是将事物划分为 8 位长的子字符串并将它们单独写入字节,或者是否有更简单、更快的方法来执行此操作?当涉及到二进制数据时,到目前为止我使用过的唯一模块是struct,这是我第一次解决这样的问题。任何和所有的建议将不胜感激。

标签: pythonstringfilebitstring

解决方案


我会使用正则表达式将其转换为列表。

import re
file = open(r"insert file path here", "a")


bitstring = "0000110010001100110110111100001000111011001100010000111101111000011000110011101000100011"

bitlist = re.findall('........', bitstring) #seperates bitstring into a list of each item being 8 characters long

for i in range(len(bitlist)):
    file.write(bitlist[i])
    file.write("\n")

让我知道这是否是您的意思。

我还想提一下,从文本文件中提取数据并不是最有效的存储方式。理想情况下,最快的将保存在诸如 [["10110100"], ["00101010"]] 之类的数组中,并通过执行...

bitarray = [["10110100"], ["00101010"]]

>>> print(bitarray[0][0])
10110100

推荐阅读