【问题标题】:Why is binary file bigger?为什么二进制文件更大?
【发布时间】:2019-01-08 10:08:58
【问题描述】:

我使用霍夫曼算法为我的在线课程项目创建了一个压缩器。问题是二进制输出文件 (10101010011..) 比原始文件大。

课程上的老师不知道答案。

我用这个,ciph_text 是一串 0 和 1。

with open(full_name,'w') as temp:
    temp.write(ciph_text)

有什么想法吗?
如果需要,我可以发布更多代码。

【问题讨论】:

  • 因为你保存为字符串,所以每个字符都算作 8 位而不是 1
  • 对于二进制也避免使用with open(full_name,'w'),使用wb
  • 不了解霍夫曼算法,但无论如何:您是否将比原始字符串长的字符串的二进制表示形式保存为文件中的 ascii 数据?我认为您应该将您的位保存为with open(full_name,'wb') as temp: 的真正二进制文件
  • 是的,您确实需要为您的问题添加更多代码,否则我们只能猜测。
  • D4N:建议你看看我的这个answer,它描述了一种按位 I/O 的方法——因为我认为你正在将生成的“位”写为一个由以下内容组成的文本文件01 字符,每个字符至少有 8 位长,而不是二进制零和一。

标签: python binary huffman-code


【解决方案1】:

int(x, 2) 是你的朋友:

>>> a="00001010000101000001111000101000"
>>> for b in range(0, len(a), 8):
...   print a[b:b+8], int(a[b:b+8], 2)
... 
00001010 10
00010100 20
00011110 30
00101000 40

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 2016-03-19
    • 2014-09-03
    • 1970-01-01
    相关资源
    最近更新 更多