#やりたいこと
配列データuart_bufferを構造体にコピーするときにmemcpyを使用すると左(NG)のように、payload1に0x44332211とセットされてしまいます。
これをpayload1に0x11223344とセットしたい(右のOK)のでビットシフト処理で(下記コード)無理やり格納しました。他に良い方法があれば知りたい。
セットしたい
C言語
1 /*パソコンデータ受信用構造体にデータセット*/ 2 //memcpy(&Pc_to_mst_data_frame_struct.slv_id, UART_struct->uart_buffer,size); 3 Pc_to_mst_data_frame_struct.slv_id = UART_struct->uart_buffer[0]; 4 Pc_to_mst_data_frame_struct.command_id = UART_struct->uart_buffer[1]; 5 Pc_to_mst_data_frame_struct.payload1 |= UART_struct->uart_buffer[2] << 24; 6 Pc_to_mst_data_frame_struct.payload1 |= UART_struct->uart_buffer[3] << 16; 7 Pc_to_mst_data_frame_struct.payload1 |= UART_struct->uart_buffer[4] << 8; 8 Pc_to_mst_data_frame_struct.payload1 |= UART_struct->uart_buffer[5]; 9 Pc_to_mst_data_frame_struct.payload2 |= UART_struct->uart_buffer[6] << 24; 10 Pc_to_mst_data_frame_struct.payload2 |= UART_struct->uart_buffer[7] << 16; 11 Pc_to_mst_data_frame_struct.payload2 |= UART_struct->uart_buffer[8] << 8; 12 Pc_to_mst_data_frame_struct.payload2 |= UART_struct->uart_buffer[9];
#しりたいこと
上記コード以外でスマートなやり方があればご教示お願いします。
無知で申し訳ありません。宜しくお願い致します。
structの定義を書いてください。
情報不足で申し訳ありません。
こちらになります↓
typedef struct Pc_to_mst_data_frame_handle_typedef
{
uint8_t slv_id;
uint8_t data_size;
uint8_t command_id;
int32_t payload1;
int32_t payload2;
int32_t payload3;
int32_t payload4;
}__PACKED Pc_to_mst_data_frame_handle_typedef;
その構造体定義をここに返答するのではなく、質問を編集して書き加えてくださいな。
回答3件
あなたの回答
tips
プレビュー