gpt4 book ai didi

64-bit - 获取 64 位平台上非常大的 .gz 文件的文件大小

转载 作者:行者123 更新时间:2023-12-02 09:52:24 24 4
gpt4 key购买 nike

根据gz的规范,文件大小保存在.gz文件的最后4个字节中。

我创建了 2 个文件

dd if=/dev/urandom of=500M bs=1024 count=500000
dd if=/dev/urandom of=5G bs=1024 count=5000000

我压缩了它们

gzip 500M 5G

我检查了最后 4 个字节

tail -c4 500M|od -I      (returns 512000000 as expected)
tail -c4 5G|od -I (returns 825032704 as not expected)

似乎遇到了看不见的 32 位障碍,使得写入 ISIZE 的值完全无意义。这比他们使用一些错误位更烦人。

有谁知道如何从 .gz 中获取未压缩的 .gz 文件大小而不解压它?

谢谢

规范:http://www.gzip.org/zlib/rfc-gzip.html

编辑:如果有人想尝试一下,您可以使用/dev/zero 而不是/dev/urandom

最佳答案

没有。

获得压缩流的确切大小的唯一方法是实际解压缩它(即使您将所有内容写入/dev/null 并只计算字节)。

值得注意的是,ISIZE 定义为

ISIZE (Input SIZE)
This contains the size of the original (uncompressed) input
data modulo 2^32.

在 gzip RFC 中所以它实际上并没有突破 32 位障碍,您看到的是预期的行为。

关于64-bit - 获取 64 位平台上非常大的 .gz 文件的文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1965567/

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