我正在处理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 1的ber解码器和编码器来解决这个问题?
感谢并致以问候
Haridas N.
发布于 2013-02-01 17:50:57
我不熟悉pyasn1,但我建议将注意力集中在输入的数据上,因为在我看来,应该将二进制字节集作为文本来处理。
如果内部标记真的是len 4,那么a \n被替换为\r\n吗?
https://stackoverflow.com/questions/14625713
复制相似问题