验证HDF5超级块校验和

时间:2014-08-14 02:24:37

标签: hdf5 netcdf

我在编写程序时遇到问题,该程序验证HDF5版本2文件的超级块中的校验和。我没有使用HDF5软件,但我的代码中有一份H5_checksum_fletcher32(来自HDF5 H5checksum.c)。

我可以假设文件签名块位于0位置。

我的逻辑是:

Let offset = the value of byte 9 of the file.

The superblock spans bytes 0 to (15+4*offset). 

The last 4 bytes are the checksum as an unsigned int.

The checksum should equal H5_checksum_fletcher32 applied to bytes 0 to (11+4*offset).

我已经将这个逻辑应用于NOAA的几个我认为可靠的测试文件,但校验和永远不会匹配H5_checksum_fletcher32的结果。超级块中的其他值似乎是正确的。谁能看到我逻辑上的缺陷?

1 个答案:

答案 0 :(得分:1)

来自HDF5 file format specification

  

格式中使用的所有校验和都是使用Jenkins' lookup3算法计算的。

这在H5checksum.c H5_checksum_lookup3()中提供。

实际上,调用的正确例程似乎是H5_checksum_metadata(),但这只是使用宏调用H5_checksum_lookup3()