1

我正在尝试为一些消息编写一个简单的序列化库。我让它工作,一切都很好,但由于某种原因,它一直在某些消息的末尾附加一个“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。有没有人知道这里发生了什么?我也可以展示一些代码,但我会尽量保持简短,因为字节字符串有望足以诊断此问题。

4

1 回答 1

1

别担心,

打印的“L”显示该值很长。

它实际上并没有对价值做任何事情,只是在打印时它是如何表示的

于 2015-07-30T15:05:01.853 回答