我用Python编写了一个使用霍夫曼算法压缩文本的脚本。假设我有以下字符串:
运行我的算法会返回以下“位”:
通过比较结果的位数和输入字符串,该算法似乎是有效的:
现在问题来了:我如何将这个编码写入文件,同时仍然能够解码。你只能按字节写入文件,而不是按位。通过将“编码”写入字节,根本没有压缩!我对计算机科学还很陌生,网络资源对我来说并不太有用。非常感谢您的帮助!
编辑:请注意,我的编码类似于以下内容(针对另一个输入字符串'xxxxxxxyzz'):
我创建最终字符串的方式是按输入字符串的顺序连接这些代码:
如何从这个结果中恢复原始字符串?或者我完全理解错了吗?谢谢!
string = 'The quick brown fox jumps over the lazy dog'
运行我的算法会返回以下“位”:
result = '01111100111010101111010011111010000000011000111000010111110111110010100110010011010100101111100011110001000110101100111101000010101101110110111000111010101110010111111110011000101101000110111000'
通过比较结果的位数和输入字符串,该算法似乎是有效的:
>>> print len(result), len(string) * 8
194 344
现在问题来了:我如何将这个编码写入文件,同时仍然能够解码。你只能按字节写入文件,而不是按位。通过将“编码”写入字节,根本没有压缩!我对计算机科学还很陌生,网络资源对我来说并不太有用。非常感谢您的帮助!
编辑:请注意,我的编码类似于以下内容(针对另一个输入字符串'xxxxxxxyzz'):
{'y': '00', 'x': '1', 'z': '10'}
我创建最终字符串的方式是按输入字符串的顺序连接这些代码:
result = '1111111001010'
如何从这个结果中恢复原始字符串?或者我完全理解错了吗?谢谢!