结构解压奇怪的结果

时间:2015-06-30 08:48:56

标签: python struct tcp unpack

我正在努力解决一个非常讨厌的bug。我有两台电脑。我从一个发送数据,另一个接收数据。

起初我尝试了struct fmt,这就是我发送它的方式:

    # Two chars and three shorts
    fmt = struct.Struct('2B 3h')
    # Two chars and three floats
    fmt2 = struct.Struct('2B 3f')
    message=[0]*5
    message[0] = cmd
    message[1] = 6
    message[2] = d1
    message[3] = d2
    message[4] = d3
    conn.send(fmt.pack(*message))

在客户端上正确解压并正确的值:

raw = self.s.recv(BUFFER_SIZE)
idx = 0
while idx < len(raw):
    length, data = parse(raw, idx)
    idx += length

    cmd, length, x, y, z = fmt.unpack(data)

但是如果我在服务器和客户端上使用第二种格式(fmt2)unpack失败。 (我注意到d1,d2和d3是漂浮物)。我试图逐个解压缩值,但我得到x,y,z的错误数据。

我不知道如何解决这个问题,而且我对结构并不熟悉。

谢谢

0 个答案:

没有答案