Write/read 位串 to/from 文件
Write/read bit-string to/from a file
我已经使用 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
我已经使用 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