Декодируйте пакет данных OSC/UDP для работы со значениями в Python.

Привет дружелюбное сообщество stackExchange.

Я получаю пакеты OSC, которые являются UDP, на мой socketserver.UDPServer. Пакеты данных UDP выглядят следующим образом:

b'/sample/address\x00,f\x00\x00@H\xf5\xc3' 

Я отправил это сообщение себе с помощью инструмента командной строки osc

oscsend localhost 9999 /sample/address f 3.14

поэтому я знаю, чего ожидать. Строка /sample/address и число с плавающей запятой со значением 3,14.

Вопрос в том, как мне декодировать приведенную выше строку байтов в Python, чтобы получить фактические значения в пригодных для использования типах?

Отказ от ответственности. Мне хорошо известно, что в Python существует несколько библиотек для работы с данными OSC. Эта проблема заключается в следующем: а) о самом знании и б) моя реализация OSC будет состоять всего из нескольких сообщений, и я хочу сделать это изначально, без каких-либо зависимостей или кода от третьей стороны (хотя моя собственная лицензия будет LGPL, так что не беспокоиться)


person nilshi    schedule 02.05.2014    source источник


Ответы (1)


Вы можете собрать решение, используя стандартный модуль struct.

person Armin Rigo    schedule 02.05.2014
comment
А если я заранее не знаю, будет ли это число с плавающей запятой, строка или целое число? - person nilshi; 03.05.2014
comment
Ты должен знать. Вы не можете надежно угадать, просто взглянув на необработанную строку. Я не знаю OSC, но вам нужно найти какую-нибудь документацию, объясняющую это. - person Armin Rigo; 03.05.2014