我正在处理 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。