gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 08:39:35 26 4
gpt4 key购买 nike

通过编写简单的Python脚本,我遇到了一个奇怪的问题:两个内容不同的文件具有相同的大小。

所以,我有两个相同的二进制数据列表,一个是字符串,一个是整数:

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:

size of files

文件的十六进制转储:

hexdump

我的问题是,为什么文件大小相等?就像我现在一样,要写入 0 或 1 的值,我们需要 1 位,要写入 30 或 31 的十六进制值,我们需要 5 位(1 1110 和 1 1111)

最佳答案

要写入 01 的值,不需要任何一位。您如何区分 3 = 11 或有两个 1 之间的区别?

在这两种情况下,您都在编写一个 8 字节的数组,只是在第一种情况下,您使用整个字节来写入字符。
可以将其视为由字母 01 组成的单词,单词 10000 0001 ,没有开头的 0,您将无法分辨出该词是什么。

关于python - 为什么这个二进制文件的大小是相等的,尽管它们不应该相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53570807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com