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

我正在使用 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 socket


print('Program Initiated')

UDP_IP = "127.0.0.1"

UDP_PORT = 6000


sock = socket.socket(socket.AF_INET,  # Internet

                 socket.SOCK_DGRAM)  # UDP

sock.bind((UDP_IP, UDP_PORT))


while True:

    data, addr = sock.recvfrom(2048)  # buffer size is 1024 bytes


if 'alpha' in str(data):

    print(data)


万千封印
浏览 202回答 1
1回答

慕侠2389804

用这个:title,args,flt1,flt2,flt3,flt4 = struct.unpack('>32s8sdddd', data)由于您对结构一无所知,因此这是基于以下猜测:该title字段是一个最长为 32 个字节的字符串,因为它是一个文本字符串并且第 32 个字节始终是0.该args字段是一个最长为 8 个字节的字符串,因为这是您假设时剩下的……四个“浮点数”中的每一个都是 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.0b'Person0/elements/alpha_absolute\x00' b',dddd\x00\x00\x00' 0.0 0.0 0.10668132073594472 0.0b'Person0/elements/alpha_absolute\x00' b',dddd\x00\x00\x00' 0.0 0.0 0.10571479478158681 0.0b'Person0/elements/alpha_absolute\x00' b',dddd\x00\x00\x00' 0.0 0.0 0.10315484049525485 0.0b'Person0/elements/alpha_absolute\x00' b',dddd\x00\x00\x00' 0.0 0.0 0.09594104835265774 0.0唯一值得注意的是,从四个浮动项目中,似乎只有一个被实际使用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python