gpt4 book ai didi

将不同类型的结构中的值复制到 1 字节值数组

转载 作者:行者123 更新时间:2023-11-30 16:11:25 24 4
gpt4 key购买 nike

假设我有一个结构:

typedef struct 
{
uint8 value_A
uint32 value_B
uint32 value_C
uint8 value_D
3ByteType value_E
} myStructure_t
/*Struct has 13 bytes*/

myStructure_t myStruct;

该结构在某个点填充了值......

我想要一个 13 字节的数组 - 代表结构中的值的值

uint8 array_8ByteElements[13] = {0};

for (uint8 idx = 0; idx <= 12; idx++)
{
array_8ByteElements[idx] = ??
}

其中 array_8ByteElements[0] = myStruct.value_A

实现这一目标的最快方法是什么?

最佳答案

您可以使用 union :

#pragma pack(push,1)

typedef struct
{
uint8 value_A;
uint32 value_B;
uint32 value_C;
uint8 value_D;
b3ByteType value_E;
} myStructure_t;

typedef union {
myStructure_t T;
unsigned char B[sizeof(myStructure_t)];
} myUnion_t;

#pragma pack(pop)

由于对齐,编译指示pack将对齐设置为1字节,并在定义后将其设置回默认对齐。

我不完全确定这会起作用。另请参阅一些程序员老兄对 Why isn't sizeof for a struct equal to the sum of sizeof of each member? 的引用

它可能需要您重新定义结构中数据元素的顺序,以使其符合对齐要求。它可能需要您显式插入填充字节。

关于将不同类型的结构中的值复制到 1 字节值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58607567/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com