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