2012-09-10 146 views
0

我有一個如下所示的結構。將32位值賦給unsigned uint8_t數組

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.at最後line.I想知道什麼是應該做的上述任務的最佳方式。

任何幫助表示讚賞。

回答

4

以下代碼將數據複製到32字節的前4個字節。

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

你有32字節的數組,你試圖給它們分配一個4字節的值。你想要什麼結果?如果它填充了前4個字節,請分別分配它們。或者使用常量數組:

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

由於不同平臺上的各種字節順序,強烈建議不要將int複製到數組中。

+0

對,你將不得不注意字節順序問題 – Mine