C 将32位值赋给无符号uint8\t数组

C 将32位值赋给无符号uint8\t数组,c,pointers,data-structures,C,Pointers,Data Structures,我有一个如下所示的结构 typedef struct { attribute_code_t field_id; uint8_t instance_num; uint8_t length; uint8_t data[32]; uint32_t crc_value; }table_entry_t; 我想按如下方式填充结构 entry->field_id = 54;; entry->instance_num = 0; entry->lengt

我有一个如下所示的结构

typedef struct
{
    attribute_code_t field_id;
    uint8_t instance_num;
    uint8_t length;
    uint8_t data[32];
    uint32_t crc_value;
}table_entry_t;
我想按如下方式填充结构

entry->field_id = 54;;
entry->instance_num = 0;
entry->length = 4;
entry->data = 0xfdfcfefa;
它给了我一个错误,错误:赋值中的不兼容类型。在最后一行。我想知道做上述赋值的最佳方法是什么


非常感谢您的帮助。

以下代码将数据复制到32字节的前4个字节

tmpdata = 0xfdfcfefa;
memcpy(entry->data, &tmpdata, sizeof(uint8_t) *4);

您有一个32字节的数组,并试图为其分配一个4字节的值。你想要什么结果?如果它正在填充前4个字节,请分别分配它们。或使用常量数组:

static const uint8_t __initializer[] = { 0xfd, 0xfc, 0xfe, 0xfa };
entry->length = sizeof(__initializer);
memcpy( entry->data, __initializer, sizeof(__initializer) );

由于不同平台上的字节顺序不同,强烈建议不要将int复制到数组。

好的,您必须注意字节顺序问题