用Python解码Simulink的UDP数据包

时间:2012-12-10 21:40:22

标签: python udp decode packet simulink

我有一个Simulink模型通过UDP将数据发送到另一个程序(Blender),在那里我可以接收数据包,但我还没弄清楚如何正确解码它们。

在Simulink模型中,我只是发送一个基于正弦波的值,没什么花哨的,只有像1.452这样的单个值。在Blender中,我将它从数据包中传出的数据吐出来,我收到的内容如下:

b'<\xa6ya\x05\x93\xe3?'

我不知道如何解码这个。它似乎有一些十六进制值,但除此之外,我迷失了。我甚至不确定所有这些数据包含的内容。它只是来自Simulink的价值,还是包含有关发送方和接收方IP地址,端口等信息的信息......?

更新: 我更新了Simulink模型,通过UDP传输一个常量值进行调试/调查。值为0.5234,我的Python脚本吐出的数据是:

b'\xab>W[\xb1\xbf\xe0?'

当转换为十六进制读数时(使用hexlify):

b'ab3e575bb1bfe03f'

如何从中提取/解码0.5234?

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

您可以使用struct解码二进制数据,在这种情况下,它似乎是double值:

>>> import struct
>>> struct.unpack('d', b'\xab>W[\xb1\xbf\xe0?')
(0.5234,)