在 Fortran 中设计大型可压缩二进制浮点数

designing a large compressible binary float in Fortran

我想为 netcdf 文件中的 4 字节和 8 字节浮点变量设计一个 "fill" 值,以表示缺失数据的特殊情况。已经有一个常量 NF_FILL_FLOAT,我对其设计的理解是,除了是一个大而奇怪的值外,它还有一个非常可压缩的位模式。我相信它不同于 huge(x)。我已经使用 NF_FILL_FLOAT 来填充缺失值——我的值必须是可区分的。我该怎么做?压缩有哪些注意事项?谢谢。

如果将 NF_FILL_FLOAT 除以 2**n 会怎么样,其中 n 是一个 >=0 的整数?这会给你 "n" 个 "fill values" 并且本质上除法只是将位移动 n,所以应该仍然是可压缩的。

(当然,如果你写成一个netcdf,那么外部软件只能识别一个MISSING的值,所以你的填充值是无法识别的)