我试图在python程序和Unity3D之间发送python数组。 下面是发送字符串消息的python部分:
#send the message
import socket
UDP_IP = "127.0.0.1"
UDP_PORT = 5065
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
msg = "Hello word!"
sock.sendto(msg, (UDP_IP, UDP_PORT))
#receive the message in Unity (C-sharp)
IPEndPoint anyIP = new IPEndPoint(IPAddress.Parse("0.0.0.0"), port);
byte[] data = client.Receive(ref anyIP);
string text = Encoding.UTF8.GetString(data);
我知道我可以将numpy数组转换为字符串格式,并将其解析为在Unity中浮动。有没有其他优雅的方式来发送和接收numpy数组而不是字符串?在
由于numpy的
ndarray
是一个二进制结构,因此需要一种方法在Python中序列化它,并在C#中反序列化。在对于序列化,可以使用^{} 。要反序列化,必须注意数据类型(double、int等)和机器的Endianess(little或big)。在
另外,如果传递的是高维数组,请注意
ndarray.tobytes()
的“C”与“Fortran”功能。在例如,在C#中,可以使用
Buffer.BlockCopy()
将字节数组反序列化为一个双精度数组,请参见例如this问题。在免责声明:我自己没有尝试过以上方法。在
相关问题 更多 >
编程相关推荐