python3.6中的相同代码生成比python2.7更大的文件。Bin到ASCII的转换

python3.6中的相同代码生成比python2.7更大的文件。Bin到ASCII的转换,python,python-3.x,file,text,ascii,Python,Python 3.x,File,Text,Ascii,有人能帮我理解为什么在Python2下运行时,由这段代码创建的文件比Python3小得多(以及预期的文件大小) binary\u str=“00110111010110101……” num_bytes=int(len(binary_str)/8) 将open('output','w')作为f: 输出_str=“” 对于范围内的i(num_字节): 输出_str+=chr(int(二进制_str[i:i+8],2)) f、 写入(输出_str) f、 关闭() 二进制_str是一个1330字节长

有人能帮我理解为什么在Python2下运行时,由这段代码创建的文件比Python3小得多(以及预期的文件大小)

binary\u str=“00110111010110101……”
num_bytes=int(len(binary_str)/8)
将open('output','w')作为f:
输出_str=“”
对于范围内的i(num_字节):
输出_str+=chr(int(二进制_str[i:i+8],2))
f、 写入(输出_str)
f、 关闭()

二进制_str是一个1330字节长的字符串。在Python2.7中,该代码生成一个1330字节的文件,其中包含相关的ascii数据。当使用python3.6运行时,气球的大小将增加到1974字节。为什么会有这种行为上的差异?

您可能会生成7位ascii中定义之外的其他字符。由于Python3.x符合unicode,7位ascii代码表之外的字符编码使用多个字节进行编码

最著名的unicode字符编码技术是。它分布广泛。在这个标准中,一个字符最多可以使用4个字节进行编码

因此,当您的文件在Python3.x的使用下成长时,这并不奇怪

与Python2.x相比,Python3.x甚至很可能会获得不同文件大小之外的其他内容

可以肯定的是,我在这里写的内容是,最好是将完整的原始位字符串发布以进行转换。所以我必须核实一下


顺便说一句,python 2.x支持从今年年初到2020年被放弃

您可能会生成7位ascii中定义以外的其他字符。由于Python3.x符合unicode,7位ascii代码表之外的字符编码使用多个字节进行编码

最著名的unicode字符编码技术是。它分布广泛。在这个标准中,一个字符最多可以使用4个字节进行编码

因此,当您的文件在Python3.x的使用下成长时,这并不奇怪

与Python2.x相比,Python3.x甚至很可能会获得不同文件大小之外的其他内容

可以肯定的是,我在这里写的内容是,最好是将完整的原始位字符串发布以进行转换。所以我必须核实一下


顺便说一句,python 2.x支持从今年年初到2020年被放弃

不以二进制模式打开文件也是一个问题。我很惊讶它在Python2.7中生成了正确的输出。好吧,我的快乐不是以二进制模式打开文件也是一个问题。我很惊讶它在Python 2.7中生成了正确的输出。好吧,我的乐趣是在with语句中,不需要关闭资源在with语句中,不需要关闭资源