Skip to main content
 首页 » 编程设计

python之为什么这个 python 代码会在不更改文件的情况下将我的文件大小加倍

2025年05月04日18TianFang

基本上,我只是想在编辑后将字符串写入文件,作为概念验证,我只是想做出本应无意义的更改。但是,如下例所示,由于某种原因,即使这样也会使我的输出大小加倍。有谁知道为什么会这样?

content = StringIO.getvalue() 
with open("real.png", 'wb') as dump: 
    dump.write(content) #35KB 
content = [str(ord(char)) for char in content] 
content = "".join([hex(int(char)).lstrip("0x").zfill(2) for char in content]) 
with open("new.png", "wb") as dump: 
    dump.write(content) #70KB 

请您参考如下方法:

您正在将每个字节转换为表示该字节的十六进制值的 2 字节字符串。十六进制字符串表示与原始字节不同。

如果没有文件大小加倍,我会感到非常惊讶。

如果您使用 HEX 编辑器查看将字节显示为十六进制字符的原始图像,那么您会将该数据的编辑器表示与文件的实际内容混淆。

如果您想更有效地完成该任务,可以使用 binascii.hexlify() function用更少的代码来做到这一点。镜像操作称为binascii.unhexlify() :

from binascii import hexlify, unhexlify 
 
content = StringIO.getvalue() 
hex_content = hexlify(content) 
same_content = unhexlify(hex_content) 
assert content == same_content