2

我有一个 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?

谢谢你的帮助!

4

1 回答 1

3

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

>>> import struct
>>> struct.unpack('d', b'\xab>W[\xb1\xbf\xe0?')
(0.5234,)
于 2012-12-10T22:47:41.627 回答