我正在使用网络协议通过网络来回传输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
还有三个空字符然后{ {1}}我不明白>s\xb6F
字符是什么,也不知道最后的sf
代表0.238
我相信,(我不熟悉OSC消息格式)>s\xb6F
表示单词s
是字符串类型(而不是value
或{{ 1}}),下一个值为int
(即float
和float
)
对我来说最令人困惑的部分是最后的小数部分:当我尝试解码字节数组的那部分时,我得到value
我还使用.238
但没有成功。有谁知道如何解码?
答案 0 :(得分:3)
根据the documentation,浮点数是32位,big-endian。
>>> struct.unpack('>f', '>s\xb6F')[0]
0.23800000548362732
此外,所有字符串以零字节结束,加上最多3个零字节,使长度为4的倍数。这解释了您拥有的所有\x00
;浮动之前有3个字符串。
P.S。我的例子是Python 2.7,你的似乎是Python 3.相应的调整。