我有一个由“A”和“B”组成的字符串组成的列表,以及范围为0..255的整数。例如,数组可以如下所示:
L = ["ABA", 2, 3, 100, 1, "BB"]
我想把它作为压缩目的放在文件中(列表L是BWT + MTF +游程长度转换的最终产品)。我也想从那个文件中读取它。这是我尝试使用bytearray,但由于“BB”不是一个字节,它失败了:
def compresslist(L, filename):
f = open(filename, 'wb')
f.write(bytearray(L))
f.close()
答案 0 :(得分:0)
由“A”和“B”组成的字符串
L = ["ABA", 2, 3, 100, 1, "BB"]
"ABAA"
的简单压缩是每个字符使用1位:'A'
为0,'B'
为1
如果字符串永远不会超过8,则可以将它们存储在1 byte
中。只有在您的列表结构固定后才能使用,即您知道bytes
和integers
的位置。
如果integers
都小于128,strings
(最多7个字符)可以存储在7位中,最高位表示它是压缩字符串。