我应该在struct.unpack
中使用w
格式字符解码perl中打包的数据的格式(文档说'BER压缩整数')?
答案 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,然后解压缩其余部分。