struct Frame_t
{
uint16_t src_id;
uint16_t dst_id;
unsigned char num;
uint8_t is_seq;
char data[48];
};
typedef struct Frame_t Frame;
char *convert_frame_to_char(Frame *frame)
{
char *char_buffer = (char *)malloc(64);
memset(char_buffer,
0,
64);
memcpy(char_buffer,
frame,
64);
return char_buffer;
}
Frame *convert_char_to_frame(char *char_buf)
{
Frame *frame = (Frame *)malloc(sizeof(Frame));
memset(frame->data,
0,
sizeof(char) * sizeof(frame->data));
memcpy(frame,
char_buf,
sizeof(char) * sizeof(frame));
return frame;
}
如果有的话,给出那些实用程序功能>
Frame *outgoing_frame = (Frame *)malloc(sizeof(Frame)); // outgoing_cmd->message contains "I love you" strcpy(outgoing_frame->data, outgoing_cmd->message); outgoing_frame->src_id = outgoing_cmd->src_id; // 0 outgoing_frame->dst_id = outgoing_cmd->dst_id; // 1 outgoing_frame->num = 100; outgoing_frame->is_seq = 1; //Convert the message to the outgoing_charbuf char *outgoing_charbuf = convert_frame_to_char(outgoing_frame); // Convert back Frame *test = convert_char_to_frame(outgoing_charbuf); // print test->data is "I "
test src为0,test dst为1,数据为“ I”,test num为d,test is_seq为1。
所以,为什么数据只有2个字符?无损地执行此操作的正确方法是什么?
谢谢!
struct Frame_t {uint16_t src_id; uint16_t dst_id;无符号字符数; uint8_t is_seq;字符数据[48]; }; typedef struct Frame_t框架; char * convert_frame_to_char(Frame * frame){...
memcpy(frame,
char_buf,
sizeof(char) * sizeof(frame));