[英]assigning a 32 bit value to unsigned uint8_t array
我有一個如下所示的結構。
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;
這給了我錯誤,錯誤:assignment.in的不兼容類型在最后一行。我想知道做上述分配的最佳方法是什么。
任何幫助表示贊賞。
以下代碼將數據復制到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復制到數組中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.