通过编写简单的 python 脚本,我遇到了一个奇怪的问题:具有不同内容的两个文件具有相同的大小。所以,我有两个相同的二进制数据列表,一个在字符串中,一个在 int 中:char_list = '10101010'int_list = [1, 0, 1, 0, 1, 0, 1, 0]然后,我将列表转换为字节数组:bytes_from_chars = bytearray(char_list, "ascii")bytes_from_ints = bytearray(int_list)打印出来,给我这个结果:bytearray(b'10101010')bytearray(b'\x01\x00\x01\x00\x01\x00\x01\x00')但是,这没关系。将此数据写入磁盘:with open("from_chars.hex", "wb") as f: f.write(bytes_from_chars)with open("from_ints.hex", "wb") as f: f.write(bytes_from_ints)并且文件大小相同,但文件包含的数据不同!ls -l:文件的十六进制转储:我的问题是,为什么文件的大小相等?就像我现在一样,要写入 0 或 1 的值,我们需要 1 位,而要写入 30 或 31 的十六进制值,我们需要 5 位(1 1110 和 1 1111)
1 回答

胡子哥哥
TA贡献1825条经验 获得超6个赞
要写入0
or的值,1
您不需要一个位。你怎么能告诉之间的差异3 = 11
或有两个1
?
在这两种情况下,您都在编写 8 个字节的数组,而在第一种情况下,您使用整个字节来编写字符。
把它想象成从字母0
和写一个词1
,这个词1
是0000 0001
,如果没有0s
开头,你将无法说出这个词是什么。
添加回答
举报
0/150
提交
取消