【问题标题】:How to read string stored in hdf5 format files by DM如何通过 DM 读取存储在 hdf5 格式文件中的字符串
【发布时间】:2017-09-28 16:49:57
【问题描述】:

我正在使用 DM 编写脚本并想读取 hdf5 文件格式。

我借用了 Tore Niermann 的 gms_HDF5_Plug-In (hdf5_GMS2X_amd64.dll) 和他的 CMD_import_hdf5.s 脚本。它使用 h5_read_dataset(filename, datapath) 来读取图像数据集。

我正在尝试找出读取存储在同一文件中的字符串信息的方法。我对读取存储在字符串中的角度特别感兴趣,如图所示。Demonstrated string to read。 h5_read_dataset(filename, datapath) 函数不适用于读取字符串。

有一个包含函数列表的帮助文件 (hdf5_plugin.chm),但遗憾的是我无法打开它们以查看更多信息。 hdf5_plugin.chm showing the function list

我想读取字符串的正确函数应该是类似 h5_read_attr() 或 h5_info() 但我没有测试它们。 DM总是说这两个功能不存在。

在通过字符串读出角度后,我还需要一些帮助来将字符串转换为双精度数据类型。

谢谢。

【问题讨论】:

    标签: hdf5 typeconverter dm-script


    【解决方案1】:

    将字符串转换为数字是使用Val() 命令完成的。 DM-script 中的变量没有整数/双精度/浮点数概念,都只是number。 (这与images 不同,您可以在其中定义数字类型。另外:对于文件输入/输出,可以使用另一个答案中的标记组流命令进行类型区分。)

    示例脚本:

    string numStr = "1.234e-2"
    number num = val( numStr )
    ClearResults()
    Result( "\n As string:" + numStr )
    Result( "\n As value:" + num )
    Result( "\n As value, formatted:" + Format(num,"%3.2f") )
    

    【讨论】:

    • 太棒了。 Val() 是我正在寻找的东西。对于文件输入/输出示例,您指的是“how-to-convert-ascii-array-image-to-a-single-string”stackoverflow.com/questions/39719129/…
    • 类似于那个,是的。但不同的是,您从文件创建流对象,然后使用标记组对象读入(或写出)一定数量的字节,这些字节被解释为特定的标记组类型。这就是为什么 TagGroup 有很多形式为 ...asLong ...asDouble 等命令的原因。
    【解决方案2】:

    关于 .chm 文件的潜在答案:当您在 Windows 中下载(或通过电子邮件发送).chm 文件时,操作系统将它们归类为“潜在危险”(因为它可能包含可执行的 HTML 代码,我认为)。因此,默认情况下无法显示这些文件。但是,您可以右键单击这些文件并在文件属性中“取消阻止”它们。

    示例:

    【讨论】:

    • 你是绝对正确的。解封后可以看到说明。完美
    【解决方案3】:

    我认为这很可能是特定于该插件的问题,而不是一般的 DM 脚本。所以最好直接联系插件作者。

    如果您知道文件格式,另一种(不好的)解决方案是“重写”您自己的 HDF5 文件阅读器。为此,您需要 DM 脚本语言的“流式传输”命令并浏览(二进制?)源文件到适当的文件位置。在 F1 帮助文档中阅读此内容的起点是:

    【讨论】:

    • 感谢您的建议,我联系了插件作者,他制作了一个可以读取字符串的更新插件。这真的很有帮助。
    猜你喜欢
    • 2019-05-16
    • 2020-12-06
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    • 2021-04-02
    • 1970-01-01
    相关资源
    最近更新 更多