这样定义的结构体该怎么读?

小石像怪 发布于 2013/03/17 14:58
阅读 253
收藏 0

【Gopher China万字分享】华为云的Go语言云原生实战经验!>>>

typedef struct  pack_header
{
unsigned int sync_byte:8;
unsigned int transport_error_indicator:1;
unsigned int payload_unit_start_indicator:1;
unsigned int transport_priority:1;
unsigned PID:13;
unsigned transport_scrambling_control:2;
unsigned adaption_field_control:2;
unsigned continuity_counter:4;

};

struct  pack_header buf;

请问,上面这个样定义的结构体该怎么读?使用buf. payload_unit_start_indicator 这样不正确吧?

加载中
0
司徒永超
司徒永超

typedef struct  pack_header ?

 把pack_header类型结构体typedef成谁?

看代码,觉得没必要用typedef。

结构体成员后面的 :8; :4; :1; :13; 之类的东西只是决定该成员占用多少位,:8;也就是占用8位,即一个1字节。


0
司徒永超
司徒永超

引用来自“LC-SOFT”的答案

typedef struct  pack_header ?

 把pack_header类型结构体typedef成谁?

看代码,觉得没必要用typedef。

结构体成员后面的 :8; :4; :1; :13; 之类的东西只是决定该成员占用多少位,:8;也就是占用8位,即一个1字节。


这个和普通结构体基本一样。
司徒永超
司徒永超
回复 @小石像怪 : 你fwrite时时这样搞的吗:fwrite(&buf, sizeof(struct pack_header), n, fp);
小石像怪
小石像怪
数据: 04 2F 19 00000 100 00101111 0001 10 01 fread到结构体后输出:001 05E0 1 2 1 001 00101111 00000 01 10 0001 实在搞不清楚内存分布规则了
司徒永超
司徒永超
回复 @小石像怪 : 直接读取这样一个结构体保存到结构体变量数据对不上?不明白你在说什么,请描述清楚。
司徒永超
司徒永超
回复 @小石像怪 : 结构体位段相关信息可查看这里:http://www.cnblogs.com/bigrabbit/archive/2012/09/20/2695543.html
小石像怪
小石像怪
有区别啊,搞不明白为什么要进行位操作调整,直接读取这样一个结构体保存到结构体变量数据对不上
返回顶部
顶部