簡體   English   中英

將32位值分配給無符號uint8_t數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM