gpt4 book ai didi

c++ - HDF5:如果 Fletcher32 校验和过滤器在数据输入时失败会怎样?

转载 作者:太空宇宙 更新时间:2023-11-04 03:34:56 25 4
gpt4 key购买 nike

HDF5 支持为输出数据管道指定的各种过滤器,特别是各种压缩算法和 Fletcher32 校验和。

在数据输入时,HDF5 库会自动检测已应用于文件数据的任何过滤器并应用反向过滤器(解压缩),无需用户执行任何操作。

然而,在广泛的(并且有些困惑)HDF5 documentation ,我找不到任何提及在阅读时检测到错误校验和的后果。

我将其标记为 cfortranc++,因为我很乐意为这两个 API 提供答案。

最佳答案

它似乎根本没有在文档中提及,但是这个 design spec对于 Fletcher32 过滤器,用户可以提供回调函数来处理失败(即不正确的校验和)。如果没有提供回调函数,

the write and read processes will fail if the Error-detecting code is enabled and finds error in the data.

也就是说,H5Dread 的返回值将为负数。

应用 Fletcher32 过滤器(例如 H5Pset_fletcher32 )后,您可以使用 H5Pset_filter_callback 设置回调.回调函数必须匹配原型(prototype):

typedef H5Z_cb_return_t (H5Z_filter_func_t) (H5Z_filter_t filter_id, void *buf, size_t buf_size, void *op_data)

并返回 H5Z_CB_FAILH5Z_CB_CONT。这样,您可以准确指定校验和失败时发生的情况。

design spec 的附录中有一个非常丑陋的示例说明如何使用所有这些.

关于c++ - HDF5:如果 Fletcher32 校验和过滤器在数据输入时失败会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33422755/

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