为了账号安全,请及时绑定邮箱和手机立即绑定

当我不知道编码时如何解码数据

当我不知道编码时如何解码数据

万千封印 2021-09-11 10:51:04
我正在使用 OSC 服务器接收数据,数据如下所示:b'Person0/elements/alpha_absolute\x00,dddd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00?\xbbP\x128\xe6/\xd4\x00\x00\x00\x00\x00\x00\x00\x00'b'Person0/elements/alpha_absolute\x00,dddd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00?\xbbOw\x8f\xa7\xac\x10\x00\x00\x00\x00\x00\x00\x00\x00'b'Person0/elements/alpha_absolute\x00,dddd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00?\xbb\x10\x1f\xf2JN\xed\x00\x00\x00\x00\x00\x00\x00\x00'b'Person0/elements/alpha_absolute\x00,dddd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00?\xbah[\nY\xe9K\x00\x00\x00\x00\x00\x00\x00\x00'b'Person0/elements/alpha_absolute\x00,dddd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00?\xb8\x8f\x97\xb1\x04\xc4B\x00\x00\x00\x00\x00\x00\x00\x00'数据标题为:Person0/elements/alpha_absolute,参数为:dddd(4 个浮点数)其余的似乎已编码。我不明白如何获得我应该收到的 4 个花车这是我的全部代码:import socketprint('Program Initiated')UDP_IP = "127.0.0.1"UDP_PORT = 6000sock = socket.socket(socket.AF_INET,  # Internet                 socket.SOCK_DGRAM)  # UDPsock.bind((UDP_IP, UDP_PORT))while True:    data, addr = sock.recvfrom(2048)  # buffer size is 1024 bytesif 'alpha' in str(data):    print(data)
查看完整描述

1 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

用这个:

title,args,flt1,flt2,flt3,flt4 = struct.unpack('>32s8sdddd', data)

由于您对结构一无所知,因此这是基于以下猜测:

  1. title字段是一个最长为 32 个字节的字符串,因为它是一个文本字符串并且第 32 个字节始终是0.

  2. args字段是一个最长为 8 个字节的字符串,因为这是您假设时剩下的……

  3. 四个“浮点数”中的每一个都是 8 个字节长,因此,从技术上讲,一个double float. 最后 8 个字节总是0. 这是一个有效的双数(0实际上);它们之前的 8 个字节都是 big-endian 格式的有效浮点数,这使得 2 个有效浮点数。因此,向后计数,另外 16 个零必须是其他 2 个值,剩下的几个字节必须属于该args字段。

unpack在提供的数据上运行会给你这个结果:

b'Person0/elements/alpha_absolute\x00' b',dddd\x00\x00\x00' 0.0 0.0 0.1066905392564757 0.0

b'Person0/elements/alpha_absolute\x00' b',dddd\x00\x00\x00' 0.0 0.0 0.10668132073594472 0.0

b'Person0/elements/alpha_absolute\x00' b',dddd\x00\x00\x00' 0.0 0.0 0.10571479478158681 0.0

b'Person0/elements/alpha_absolute\x00' b',dddd\x00\x00\x00' 0.0 0.0 0.10315484049525485 0.0

b'Person0/elements/alpha_absolute\x00' b',dddd\x00\x00\x00' 0.0 0.0 0.09594104835265774 0.0

唯一值得注意的是,从四个浮动项目中,似乎只有一个被实际使用。


查看完整回答
反对 回复 2021-09-11
  • 1 回答
  • 0 关注
  • 183 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信