为什么像这个 PNG 片段这样的二进制文件里面有这么多空白

为什么像这个 PNG 片段这样的二进制文件里面有这么多空白

这是 PNG 文件第一部分的片段,只需在 Sublime Text 中打开它并直接查看十六进制代码即可。

8950 4e47 0d0a 1a0a 0000 000d 4948 4452
0000 02e7 0000 0155 0806 0000 004c ed41
2b00 0000 0662 4b47 4400 ff00 ff00 ffa0
bda7 9300 0000 0774 494d 4507 d907 1209
3738 0601 8766 0000 2000 4944 4154 789c
ecbd 799c 6567 5de7 fff9 3ef7 5675 279d
a4b3 d008 1242 2288 c486 10e8 ee74 57a7
bb53 28a2 202e a8c1 0d07 d780 a8a3 8338
fc04 c601 45dc 1750 5161 1670 e437 0e71
5c90 4504 a549 77ba 7a65 0f20 8681 8140
423a 2b49 7aa9 aafb 7ce7 8fb3 dce7 3ce7

似乎可以通过删除文件中的空格来节省一些空间。我很想知道这是否是 PNG 的优化技术。或者也许让这些 4 个字符序列之间用 1 个空格隔开有一些我不知道的优势或目的。

答案1

空格不在文件中。你看到的不是文本– 这是一个十六进制列表数字,并且数字无论中间是否有空格都是一样的。所以它仍然是四个字节无论您将它们写为89 50 4e 4789504e47(137, 80, 78, 71)或确实为�PNG

您看到这种情况的原因可能是 Sublime Text 检测到文件内容无法合理地显示为文本。因此,它选择了一种替代表示形式——每个字节作为两个十六进制数字。(有关更好的示例,请查看此插入对于 sublimetext。)

回想起那个每一个文件由字节组成,一个字节是十进制 0 到 255 之间的数字(或十六进制 0 到 FF)。尽管文本编辑器一般来说将每个字节显示为一个字母,这不是唯一的方法。

相关内容