繁体   English   中英

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

[英]How do I decode data when I don't know the encoding

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

用这个:

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个有效浮点数。 因此,向后计数,其他2个值必须再有16个零,并且剩下的几个字节必须属于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

唯一值得注意的是,在这四个浮动项目中,似乎只使用了一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM