Python相当于Perl的'w'打包格式

时间:2011-07-21 13:09:20

标签: python perl struct

我应该在struct.unpack中使用w格式字符解码perl中打包的数据的格式(文档说'BER压缩整数')?

1 个答案:

答案 0 :(得分:3)

我不相信python的struct模块支持该格式,它主要仅支持C结构中常见的编码。 BER& DER编码通常只在ASN.1编码流中遇到...其中一个Python ASN.1模块在这种情况下可能会有所帮助(我应该注意它们用户友好)。

如果没有,您可能必须自己实施解码器。下面的代码将读取一个int,并返回解压缩应该在字符串中的位置...

def decode_ber_int(data, offset):
    value = 0
    while True:
        tmp = ord(data[offset])
        value = (value<<7) | (tmp&0x7f)
        offset += 1
        if tmp & 0x80 == 0:
            break
    return value, offset

可悲的是,这可能需要将你的解包调用分解为unpack,decode_ber_int,然后解压缩其余部分。