【发布时间】:2013-01-31 12:23:14
【问题描述】:
我正在处理 BER 编码的呼叫数据记录 (CDR)。来自 GPRS 隧道协议。其中我得到了一个字段的值,其中包含'\r\n'。
'\xa0\x06\x80\x04\r\n\xc4\x086' -- 这是导致问题的编码字符串或bytearray。它包含标签a0所需的所有TLV信息,长度为06。有一个内部标签80,长度为04。但是,如果我们以下列方式获取输出,它会像这样打印。
导致问题的内部标签 80 的值。它的长度是04,但是当我们用pyasn1对其进行解码时,长度变成了05,因为它分别计算\r和\n。我认为编码这些数据的编码器假定\r\n 是一个元素。但是在使用 pyasn1 解码时,由于编码值的 TLV 表示缺少长度,它会引发错误。
map(ord, '\xa0\x06\x80\x04\r\n\xc4\x086')
[160, 6, 128, 4, 13, 10, 196, 8, 54]
我们正在使用隐式标签号。
有没有办法使用pyasn1的ber解码器和编码器来解决这个问题。
感谢和问候,
哈里达斯 N.
【问题讨论】: