我正在尝试为一些消息编写一个简单的序列化库。我让它工作,一切都很好,但由于某种原因,它一直在某些消息的末尾附加一个“L”。从字面上看,从来没有任何其他字符,始终是 L,并且始终针对相同的数据。不过,它似乎通常会将 L 粘贴在较大的数据上,我不知道发生了什么。
>>> a = messager(messager.genericHeader() + [0x1111, 0x2222, 0x33334444, 0xdeadbeefdeadbeef])
>>> b = a.serialize()
>>> b
'\xb0\xba\xfewGRYP\x00\x01\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x11""33DD\xde\xad\xbe\xef\xde\xad\xbe\xef'
>>> c = a.deserialize(b)
>>> hex(c[0])
'0x1111'
>>> hex(c[1])
'0x2222'
>>> hex(c[2])
'0x33334444'
>>> hex(c[3])
'0xdeadbeefdeadbeefL'
从我所看到的,位串的末尾显然没有字节可以读取为 L。有没有人知道这里发生了什么?我也可以展示一些代码,但我会尽量保持简短,因为字节字符串有望足以诊断此问题。