Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么二进制文件更大?_Python_Binary_Huffman Code - Fatal编程技术网

Python 为什么二进制文件更大?

Python 为什么二进制文件更大?,python,binary,huffman-code,Python,Binary,Huffman Code,我使用哈夫曼算法为我的在线课程项目创建了一个压缩器。问题是二进制输出文件(10101010011..)比原始文件大 这门课的老师不知道答案 我使用它,其中ciph\u text是一个0和1的字符串 with open(full_name,'w') as temp: temp.write(ciph_text) 有什么想法吗? 如果需要,我可以发布更多代码。int(x,2)是您的朋友: >>> a="00001010000101000001111000101000" &g

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

这门课的老师不知道答案

我使用它,其中
ciph\u text
是一个0和1的字符串

with open(full_name,'w') as temp:
    temp.write(ciph_text)
有什么想法吗?
如果需要,我可以发布更多代码。

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

由于要保存为字符串,因此每个字符都计为8位,而不是1位。为了避免使用open(full_name,'w')作为二进制,请使用
wb
不知道霍夫曼算法,但无论如何:是否将比原始字符串长的字符串的二进制表示形式保存为文件中的ascii数据?我认为你应该通过
将open(全名,'wb')作为temp:
将你的位保存在一些字节中作为一个真正的二进制文件。是的,你确实需要在你的问题中添加更多的代码,否则我们所能做的就是猜测。D4N:建议你看看我的这篇文章,它描述了一种按位I/O的方法,因为我认为你正在编写生成的“位”作为由
0
1
字符组成的文本文件,每个字符的长度至少为8位,而不是二进制零和一。