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复制到数组。好的,您必须注意字节顺序问题