我使用网络协议在网络上来回传输OSC(开放式声音控制消息)。在
消息以byte array
以及其他格式接收。我试图理解它的字节数组部分。在
ascii中的一个示例消息是
/track_0_volume/x "value" 0.238
该消息对应的字节数组是
b'/track_0_volume/x\x00\x00\x00,sf\x00value\x00\x00\x00>s\xb6F'
我可以看到字节数组中有/track_0_volume/x
,后面是三个空字符,然后是ascii值sf
,一个空字符value
还有三个空字符,然后是>s\xb6F
,我不明白sf
字符是什么,也不明白结尾的>s\xb6F
如何表示0.238
我相信,s
表示单词value
是字符串类型(与int
或float
相反),下一个值是float
(即value
和{
最让我困惑的部分是末尾的小数部分:当我试图解码字节数组的那部分时,我得到一个UnicodeDecodeError: 'utf-8 can't decode byte 0xb6
我也使用了struct.unpack('f', b'\b6F')
,但没有成功。有人知道怎么解码吗?在
根据the documentation的说法,浮点数是32位,大端数。在
另外,所有字符串都以一个零字节结尾,再加上最多3个零字节,使长度成为4的倍数。这解释了您拥有的所有
\x00
;在float前面有3个字符串。在另外,我的例子是Python2.7,你的是Python3。相应调整。在
相关问题 更多 >
编程相关推荐