struct msg { u16 module_id; u16 cmd_id; u16 cmd_subid; u16 complete; u8 data[128]; };我有上述的一个msg结构体,现在我想将两个unsigned int类型数据放入msg结构体的data数组中,然后再从data数组内还原这两个数据,请在完全保存这两个数据的前提下,给出详细的代码
时间: 2024-03-13 22:44:34 浏览: 59
假设要保存的两个 unsigned int 类型的数据分别为 `data1` 和 `data2`,可以按照以下方式将它们存入 `msg` 结构体的 `data` 数组中:
```c
struct msg message;
unsigned int data1 = 12345;
unsigned int data2 = 67890;
memcpy(&message.data[0], &data1, sizeof(unsigned int));
memcpy(&message.data[sizeof(unsigned int)], &data2, sizeof(unsigned int));
```
在上述代码中,使用了 `memcpy` 函数将 `data1` 和 `data2` 的值分别拷贝到 `msg` 结构体的 `data` 数组中。
接下来,可以按照以下方式从 `msg` 结构体的 `data` 数组中还原这两个数据:
```c
unsigned int recv_data1, recv_data2;
memcpy(&recv_data1, &message.data[0], sizeof(unsigned int));
memcpy(&recv_data2, &message.data[sizeof(unsigned int)], sizeof(unsigned int));
```
在上述代码中,同样使用了 `memcpy` 函数将 `msg` 结构体的 `data` 数组中保存的数据还原到 `recv_data1` 和 `recv_data2` 变量中。
阅读全文