我有一个像以下
的结构struct Struct {
int length; //dynamicTest length
unsigned int b: 1;
unsigned int a: 1;
unsigned int padding: 10;
int* dynamicTest;
int flag;
}
我想将其复制到char数组缓冲区(通过套接字发送)。我很好奇我会怎么做。
答案 0 :(得分:0)
准确地说,您使用memcpy
执行此操作,例如:
#include <string.h>
/* ... */
Struct s = /*... */;
char buf[1024]
memcpy(buf, &s, sizeof(s));
/* now [buf, buf + sizeof(s)) holds the needed data */
或者你可以完全避免复制并查看一个struct实例作为char数组(因为计算机内存中的所有内容都是字节序列,这种方法有效)。
Struct s = /* ... */;
const char* buf = (char*)(&s);
/* now [buf, buf + sizeof(s)) holds the needed data */
如果您要通过网络发送它,您需要关注字节顺序,int大小和许多其他细节。
复制位字段没有问题,但对于动态字段,例如char*
这种天真的方法不起作用。适用于任何其他类型的更通用的解决方案是serialization。