python - 向文件写入/读取位串
问题描述
我已经使用 RLE 编码了一个 8x8 的数字块,并得到了我需要写入文件的这一串位。序列的最后一个系数被相应地填充,以便整个事物可以被 8 整除。
在上图中,您可以看到数字数组、RLE 编码(86 位长)、可被 8 整除的填充版本(88 位长)以及我要写入文件的串联字符串。
0000110010001100110110111100001000111011001100010000111101111000011000110011101000100011
编写此连接字符串的最佳方法是将事物划分为 8 位长的子字符串并将它们单独写入字节,或者是否有更简单、更快的方法来执行此操作?当涉及到二进制数据时,到目前为止我使用过的唯一模块是struct
,这是我第一次解决这样的问题。任何和所有的建议将不胜感激。
解决方案
我会使用正则表达式将其转换为列表。
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
推荐阅读
- java - 使用登录屏幕密码选择服务器
- elasticsearch - Elasticsearch 一个数组至少包含一个元素
- elasticsearch - Jasper Webservice 适配器是否通过过滤某些字符来更改 REST 请求正文?
- bash - 删除空行后从文本文件中选择随机行
- spring - 使用 WebFlux 和 Keycloak 在 Spring Boot 中上传多部分表单数据时出现问题
- python - Python TKinter 事件 - 关闭窗口
- android - 链接共享 C 库时出现 Android NDK 错误
- windows - DNS更改.bat脚本适用于Win7但不适用于Win10
- javascript - 添加带有样式组件的活动类不起作用
- java - SQLite 通过单击“添加”按钮错误和崩溃来更新表的某些列