为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这个二进制文件的大小是相等的,尽管它们不应该?

为什么这个二进制文件的大小是相等的,尽管它们不应该?

达令说 2021-09-02 19:48:06
通过编写简单的 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个赞

要写入0or的值,1您不需要一个位。你怎么能告诉之间的差异3 = 11或有两个1

在这两种情况下,您都在编写 8 个字节的数组,而在第一种情况下,您使用整个字节来编写字符。
把它想象成从字母0和写一个词1,这个词10000 0001,如果没有0s开头,你将无法说出这个词是什么。


查看完整回答
反对 回复 2021-09-02
  • 1 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信