我正在做一些网络编程,我使用一些struct
来描述我的帧头,如下所示:
struct my_frame_header {
uint16_t field1;
uint16_t field2;
};
所以,当我有一个缓冲帧时,我可以做类似的事情:
uint8_t buffer[BUFFER_SIZE];
struct my_frame_header *frame_header = (struct my_frame_header *)buffer;
my_read(buffer, BUFFER_SIZE);
我现在可以像这样访问 header 字段:
ntohl(frame_header->field1);
现在,我的问题是:访问结构后的数据的最优雅的方式是什么? (即在数据部分的开头获取指针)
最佳答案
好吧,如果我正确理解你的问题,你可以做类似的事情
uint8_t * data = (uint8_t *)buffer + sizeof (struct my_frame)
然后,data
将是指向 header 之后的下一个 uint8_t
元素的指针。
关于c - 在 header 结构之后访问数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28188941/