有一个2进制网络协议,用struct模块,通过pack(),unpack()和bytes交互。
但是想和c一样,定义一个struct,不通过struct模块,行不行呢?
比如:
class T(ctypes.Structure):
_fields_=[('x',ctypes.c_uint)]
等同于c的:
struct T {
unsigned int x;
};
t = T()
如何让t直接得到bytes的数据,和转成bytes呢?
使用 f = open("kk",'wb'); f.write(t); f.close()
能把t的二进制数据直接写入文件,但是sock.write()就不行,说不是byte-ish类型。
不知其中原委,愿其详
但是想和c一样,定义一个struct,不通过struct模块,行不行呢?
比如:
class T(ctypes.Structure):
_fields_=[('x',ctypes.c_uint)]
等同于c的:
struct T {
unsigned int x;
};
t = T()
如何让t直接得到bytes的数据,和转成bytes呢?
使用 f = open("kk",'wb'); f.write(t); f.close()
能把t的二进制数据直接写入文件,但是sock.write()就不行,说不是byte-ish类型。
不知其中原委,愿其详
