我在 C 中有一个 1 字节的编译指示压缩结构,我想将其复制到一个字节数组中,以便通过串行端口发送序列化。
#pragma pack(push, 1)
typedef struct {
uint8_t ck_a;
uint8_t ck_b;
} UBXChecksum_t ;
#pragma pack(pop)
将它序列化为字节数组的最佳方法是什么,我应该使用memcpy()
吗?
void writeStructToArray(const void* inStruct,
const uint16_t inLenStruct,
uint8_t* const outArray)
{
memcpy(outArray, inStruct, inLenStruct);
}
还是更好地使用逐字节复制进行指针类型转换?
void writeStructToArray(const void* inStruct,
const uint16_t inLenStruct,
uint8_t* const outArray)
{
for(uint16_t i = 0; i < inLenStruct; i++)
{
outArray[i] = ((uint8_t*)inStruct)[i];
}
}