Python生成的lzma文件缺少未压缩大小

2024-07-01 08:07:06 发布

您现在位置:Python中文网/ 问答频道 /正文

根据https://svn.python.org/projects/external/xz-5.0.3/doc/lzma-file-format.txt

lzma头应该是这样的 1.1. 标题

+------------+----+----+----+----+--+--+--+--+--+--+--+--+
| Properties |  Dictionary Size  |   Uncompressed Size   |
+------------+----+----+----+----+--+--+--+--+--+--+--+--+

我尝试使用以下方法生成16kb*.bin文件的lzma文件:

1.)7z标准SDK给出的lzma.exe(带-d23参数,2^23 dict size),然后

2.)尝试使用以下代码在python中生成

import lzma

fileName = "file_split0_test.bin"
testFileName = "file_split0_test.lzma"
lzma_machine = lzma.LZMACompressor(format=lzma.FORMAT_ALONE)

with open(fileName, "rb") as fileRead:
    toWrite = b""
    byteRead = fileRead.read()

    data_out = lzma_machine.compress(byteRead)

    #print(data_out.hex())
    fs = open(testFileName, 'wb')
    fs.write(data_out)
    fs.close()

fileRead.close()

然而,尽管我使用了相同的“属性”5d和字典大小0x8000,但两者的结果是不同的。我可以看到python生成的lzma文件的输出为“Uncompressed Size”字段生成了所有0xFF,这与使用lzma.exe生成的输出不同

希望任何专家都能指出我的错误

lzma.exe生成的文件

1

python lzma生成的文件

2


Tags: 文件testformatdatasizebinfilenameout

热门问题