0

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

4

1 回答 1

1

我对 pyasn1 不熟悉,但我建议关注传入的数据,因为这对我来说表明存在将二进制字节集视为文本的东西......

如果内部标签确实是 len 4,那么 \n 是否被替换为 \r\n?

于 2013-02-01T17:50:57.753 回答