如何在python中解码/编码十进制值?

时间:2014-09-30 21:51:03

标签: python osc

我正在使用网络协议通过网络来回传输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(即floatfloat

对我来说最令人困惑的部分是最后的小数部分:当我尝试解码字节数组的那部分时,我得到value

我还使用.238但没有成功。有谁知道如何解码?

1 个答案:

答案 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.相应的调整。