gpt4 book ai didi

language-agnostic - 从python中的二进制文件中提取zlib压缩数据

转载 作者:行者123 更新时间:2023-12-04 13:17:08 25 4
gpt4 key购买 nike

我的公司使用传统文件格式存储电子照相术数据,该文件格式已不再生产。但是,对于保持回溯兼容性有些兴趣,因此我正在研究为该文件格式编写阅读器的可能性。

通过分析非常复杂的用Delphi编写的先前源代码,文件读取器/写入器使用ZLIB,并且在HexEditor内部,看起来好像有一个二进制ASCII格式的文件头(具有“Player”,“Analyzer”之类的字段易于阅读),然后是包含原始数据的压缩字符串。

我的疑问是:如何确定以下内容:

  • 如果是压缩流;
  • 压缩流在哪里开始,在哪里结束;

  • 从维基百科:

    zlib compressed data is typically written with a gzip or a zlib wrapper. The wrapper encapsulates the raw DEFLATE data by adding a header and trailer. This provides stream identification and error detection



    这相关吗?

    我很乐意发布更多信息,但是我不知道最相关的是什么。

    感谢您的任何提示。

    编辑:我有工作的应用程序,并且可以使用它来记录任何时间长度的实际数据,并在必要时获取小于1kB的文件。

    一些样本文件:

    一个新创建的,没有数据流: https://dl.dropbox.com/u/4849855/Mio_File/HeltonEmpty.mio

    保存了非常短的时间(1秒?)后,与上面相同: https://dl.dropbox.com/u/4849855/Mio_File/HeltonFilled.mio

    与名为“manco”而不是“Helton”的患者不同的是,它的流更短(适合十六进制查看): https://dl.dropbox.com/u/4849855/Mio_File/manco_short.mio

    说明:每个文件都应该是患者(一个人)的文件。在这些文件中,保存了一个或多个检查,每个检查由一个或多个时间序列组成。提供的文件仅包含一个考试和一个数据系列。

    最佳答案

    首先,为什么不扫描文件以查找所有有效的zip流(对于小文件并确定格式就足够了):

    import zlib
    from glob import glob

    def zipstreams(filename):
    """Return all zip streams and their positions in file."""
    with open(filename, 'rb') as fh:
    data = fh.read()
    i = 0
    while i < len(data):
    try:
    zo = zlib.decompressobj()
    yield i, zo.decompress(data[i:])
    i += len(data[i:]) - len(zo.unused_data)
    except zlib.error:
    i += 1

    for filename in glob('*.mio'):
    print(filename)
    for i, data in zipstreams(filename):
    print (i, len(data))

    看起来数据流包含小尾数 double 浮点数据:
    import numpy
    from matplotlib import pyplot

    for filename in glob('*.mio'):
    for i, data in zipstreams(filename):
    if data:
    a = numpy.fromstring(data, '<f8')
    pyplot.plot(a[1:])
    pyplot.title(filename + ' - %i' % i)
    pyplot.show()

    关于language-agnostic - 从python中的二进制文件中提取zlib压缩数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12147484/

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