我正在处理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的解码器和编码器来解决这个问题。
谢谢和问候,
Haridas N。
答案 0 :(得分:1)
我不熟悉pyasn1,但我建议关注进来的数据,因为对我来说这表明有些事情应该将二进制字节集视为文本...
如果内部标签真的是len 4,那么\ n \ n已被\ r \ n?
取代