通过网络发送 Python c_types结构

sending python c_types structure through network

本文关键字:types 结构 Python 网络      更新时间:2023-10-16

我有一个声明为c_types的结构

 class MyMessage(Structure):
   __fields__ = [ ("name",c_char * 32), ("id", c_int) ]

我想使用以下伪代码通过 UDP 将此数据发送到我的 c++ 客户端

 myMessage = MyMessage()
 socket.sendto( *myMessage*, host, port)

在我的C++中,我通常在每个字段上调用 hton,然后将结构写入 char 缓冲区。如何在 python 中执行此操作?我看到人们使用struct.pack,这是正确的方法吗?当我使用 struct.pack 格式化时,我应该处理 hton 吗?

是的,你应该使用 struct.pack . 您可以在写入包格式字符串时指定字节顺序。 要设置其格式以hton可以使用>符号。 查看有关字节顺序和对齐方式的结构文档

>>> import struct
>>> struct.pack(">L", 1)    # big endian
'x00x00x00x01'
>>> struct.pack("L", 1)
'x01x00x00x00'