Properly used,
memcpy
must work. e.g.
struct MyStruct
{
unsigned char u;
int i;
char c;
};
#include <cstdio>
#include <cstring>
int main()
{
unsigned char buf[0x100];
MyStruct m;
m.u = 5;
m.i = -1;
m.c = 'A';
memcpy(buf, &m, sizeof(m));
printf("buf = { ");
for (size_t i; i<sizeof(m); i++)
{
printf("%02X ", buf[i]);
}
printf("}\n");
}
outputs:
buf = { 05 00 00 00 FF FF FF FF 41 00 00 00 }