[英]What is the alternative of memcpy in python?
我在python中有一个类对象。 我想通过TCP发送该对象值。
我知道是否是C ++,可以像下面这样发送。
class Abc
{
int x;
float y;
string x;
};
Abc Obj;
char* data = new char[sizeof(Abc)];
memcpy(data, &obj, sizeof(Abc));
tcpsender.send(data); // may be incorrect syntax
因此,数据将作为字节发送到目的地。
现在我必须在Python中执行此操作。
这两条线的替代部分是什么?
/*
char* data = new char[sizeof(Abc)];
memcpy(data, &obj, sizeof(Abc));
*/
它不等同于C memcpy
,但是如果您的要求是通过TCP发送对象并在另一端进行重构,则pickle
模块适合您。
目标是将对象存储在顺序文件或字符串中并进行检索,包括跨不同体系结构。
编辑:来自Python 3.4 的Python标准库手册中的示例:
对于最简单的代码,请使用dump()和load()函数。
import pickle
# An arbitrary collection of objects supported by pickle.
data = {
'a': [1, 2.0, 3, 4+6j],
'b': ("character string", b"byte string"),
'c': set([None, True, False])
}
with open('data.pickle', 'wb') as f:
# Pickle the 'data' dictionary using the highest protocol available.
pickle.dump(data, f, pickle.HIGHEST_PROTOCOL)
以下示例读取所得的腌制数据。
import pickle
with open('data.pickle', 'rb') as f:
# The protocol version used is detected automatically, so we do not
# have to specify it.
data = pickle.load(f)
struct
软件包可以为您完成此任务。
import struct
fmt = 'if10p'
data = struct.pack(fmt, 42, 1.234, 'hello')
print struct.unpack(fmt, data)
您必须指定字符串的最大长度(此处为10)。 您的C ++版本不起作用,因为字符串的原始字节将包含指针而不是字符串中的字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.