通过udp消息格式max / msp到ruby

我正在尝试使用max / msp为ruby项目构建一个小GUI我无法找到一种方法来正确转换我收到的最大数据。

这里有几个我从ruby中收到的消息的例子(我先发送2然后发送1 0 -1 -2):

["int\x00,i\x00\x00\x00\x00\x00\x02", ["AF_INET", 53802, "127.0.0.1", "127.0.0.1"]] ["int\x00,i\x00\x00\x00\x00\x00\x01", ["AF_INET", 53802, "127.0.0.1", "127.0.0.1"]] ["int\x00,i\x00\x00\x00\x00\x00\x00", ["AF_INET", 53802, "127.0.0.1", "127.0.0.1"]] ["int\x00,i\x00\x00\xFF\xFF\xFF\xFF", ["AF_INET", 53802, "127.0.0.1", "127.0.0.1"]] ["int\x00,i\x00\x00\xFF\xFF\xFF\xFE", ["AF_INET", 53802, "127.0.0.1", "127.0.0.1"]] 

到目前为止,我已经能够通过String#ord或String#unpack将正值转换为整数,但是使用这些方法,负整数给出0值

您可以使用#unpack ,使用offset(’@ 8’)和32位signed signed bigendian int(’l>’)轻松完成

 str.unpack('@8l>') 

我不确定字符串的初始部分是什么意思(“int \ x00,i \ x00 \ x00”)而我只是忽略了偏移量。 如果有任何重要数据,可能需要额外的摆弄。

Interesting Posts