c - 在 header 结构之后访问数据

标签 c struct network-programming

我正在做一些网络编程,我使用一些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/

相关文章:

c - 判断条件语句中的单个语句为真

c - fflush在fork操作之前做了什么?

c - 调用 free() 时出现段错误

pointers - 何时使用指针

java - Netty 的长度前缀框架 - 无法设置 LengthFieldPrepender/Decoder

http - 如何在 C 中通过 HTTP 协议(protocol)发送图像?

c - 无需复制粘贴即可实现不同但相似的结构/功能集

python 打包/解包数字指定字节数

c - 返回结构时出现段错误

networking - 如何使用 UdpSocket 通过特定网络接口(interface)发送?