【问题标题】:How to decompress a file in fortran77?如何在fortran77中解压文件?
【发布时间】:2010-10-16 00:54:57
【问题描述】:

我有一个压缩文件。 让我们忽略 tar 命令,因为我不确定它是否被压缩。 我所知道的是它是在 fortran77 中压缩的,这就是我应该用来解压缩它的。 我该怎么做? 解压是一条路还是我需要某个头文件来引导(直接)解压?

这不是 .Z 文件。它以别的东西结束。 我需要什么来解压它?我知道最终解压后的格式。

文件是否有可能通过简单的方式压缩,但它显示为不同的扩展名?

【问题讨论】:

  • 如果你有f77程序的源码,可以用f2c转成C,用gcc编译。除了这里的内容之外,您还没有真正为任何人提供足够的信息来帮助您。

标签: fortran fortran77 compression


【解决方案1】:

您可以使用 file 命令检查它是否是已知的压缩文件类型。假设 file 返回类似“二进制文件”的内容,那么您几乎可以肯定看到的是纯二进制数据。

【讨论】:

    【解决方案2】:

    我的猜测是你有一个二进制文件,它是由 Fortran 程序输出的。这些看起来像压缩文件,因为它们在文本编辑器中不可读。

    Fortran 允许您将内存中的数据写入文件而不对其进行格式化,这样您以后可以重新加载它而无需对其进行解析。但是,问题是您需要原始源代码才能查看文件中写入了哪些类型的变量。

    如果您无法访问 fortran 源代码,但有 很多 空闲时间,您可以编写一些简单的 fortran 程序并猜测正在使用哪些类型的变量。不过,我不建议这样做,因为 Fortran 不是很宽容。

    如果您想尝试一些简单的源代码,请查看this page,其中详细介绍了 Fortran 中的二进制读写,并包含代码示例。只需将 reclength=reclength*4 替换为 reclength=reclength*2 即可获得双精度实数。

    【讨论】:

    • 这也是我的猜测——它可能是一个未格式化的二进制文件。
    【解决方案3】:

    首先,让我们将“fortran”部分排除在等式之外。没有标准(我指的是 fortran 标准)压缩或解压缩文件的方法,因为 fortran 没有压缩实用程序作为语言的一部分。也许有人自己写了一些,但这完全取决于他。

    因此,您会被公开可用的压缩实用程序等困住。在有可用的系统和支持它的编译器上(它会有所不同),您可以使用 SYSTEM 函数,该函数通过将命令字符串传递给操作系统的命令解释器来执行系统命令(我知道它存在于 cvf 中,可能ivf ...您可能应该在编译器的帮助下查找它)。

    既然你问了一个类似的问题already 我想你仍然有这个问题。您提到“它是用 fortran77 压缩的”。你是什​​么意思 ?有人在 f77 中构建了一个压缩实用程序并使用它吗?所以这将使它成为一个定制的解决方案?

    如果它是某种自定义解决方案,那么它实际上可以是任何东西,因为许多算法都可以用作“压缩算法”(与纯文本相比,将文件写入二进制文件将节省几个字节;瞧,“压缩")

    还是我误解了什么?请详细说明一下。

    【讨论】:

      【解决方案4】:

      你说文件扩展名不是 .Z,而是别的什么。那是什么东西?

      如果是 .gz(在 Unix 系统上很常见),“gunzip”是正确的命令。如果是 .tgz,您可以对其进行压缩和解压缩。 (或者您可以阅读 tar(1) 的手册页,因为它可能具有 gunzip 和解压缩的能力。)

      如果是在 Windows 上,看看 Windows 是否可以直接读取它,因为文件系统本身似乎支持 ZIP 格式。

      如果还有其他内容,请列出文件名(或者,如果存在安全隐患,请列出以第一个句点开头的文件名),我们也许可以弄清楚。

      【讨论】:

        【解决方案5】:

        没有标准的减压方法,有吨。您需要知道用于压缩它的方法才能解压它。

        【讨论】:

        • 可能他的意思是用shell工具“compress”压缩的文件,即.Z文件。
        • 他指定不是这样 =\
        • Hrm,我不认为那句话在我写上面的时候...... :-)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-12
        • 2016-10-31
        • 2012-11-21
        • 1970-01-01
        • 2011-10-30
        • 1970-01-01
        • 2021-03-15
        相关资源
        最近更新 更多