いくつかのメッセージ用の単純なシリアル化ライブラリを作成しようとしています。動作しており、すべて問題ありませんが、何らかの理由で特定のメッセージの末尾に「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 として読み取られるバイトがないことは明らかです。いくつかのコードを示すこともできますが、この問題を診断するにはバイト文字列で十分であると思われるため、簡単に説明します。