不规则字段大小的Python结构解包

2024-06-16 09:46:15 发布

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

我试图解压包含一些元数据和图像的结构。都是零碎的,但是里面的东西包装的方式很奇怪。元素不是在字节上对齐,而是每隔6位对齐。文件格式和内容在下图中列出,也可以通过链接:http://etlcdb.db.aist.go.jp/etlcdb/etln/form_c.htm访问。在

我唯一感兴趣的字段是JIS代码和最后一个字段16灰度图像数据。此数据取自http://etlcdb.db.aist.go.jp/etlcdb/etln/etl4/etl4.htm。在

我面临的主要问题是字段是6位对齐的。我不知道如何正确地解压这个结构。在

另外,对于PIL,它也不清楚如何处理4位图像。模式1工作不正常,如预期。。在

file format

import struct
from PIL import Image, ImageFont, ImageDraw

filename = 'ETL4/ETL4C'
skip = 0
record_size = 2952
with open(filename, 'r') as f:
        f.seek(skip * record_size)
        s = f.read(record_size)
        r = struct.unpack('>9x1i203x2736s', s)
        print r[1]
        i1 = Image.frombytes('1', (72, 76), r[1], 'raw')
        # fn = 'ETL9B_{:d}_{:d}.png'.format((r[0]-1)%20+1, hex(r[1])[-4:])
        fn = 'name1.png'
        i1.save(fn, 'PNG')

Tags: 数据图像httpgodbsizerecord结构