Python Struct Library追加不需要的Char'L'

时间:2015-07-30 15:01:56

标签: python serialization struct rawbytestring

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

1 个答案:

答案 0 :(得分:1)

不要担心,

' L'得到打印显示值很长。

它实际上并没有对值进行任何操作,只是在打印时如何表示