通过网络发送python c_types结构

时间:2015-04-28 17:01:57

标签: python c++ networking

我有一个声明为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吗?

1 个答案:

答案 0 :(得分:2)

是的,您应该使用struct.pack。您可以在编写包格式字符串时指定字节顺序。要为hton格式化,您可以使用>符号。请参阅byte order and alignment

上的结构文档
>>> import struct
>>> struct.pack(">L", 1)    # big endian
'\x00\x00\x00\x01'
>>> struct.pack("L", 1)
'\x01\x00\x00\x00'