[求助] 结构体程序编写

李嘉辉   2016-12-12 16:55 楼主
数据打包的过程中,怎么把记录的一些标志位装到结构体里面呢           紧急求助

回复评论 (7)

bitfield,段位,如果你是要用到位变量的话,可以考虑这个方式。
点赞  2016-12-13 13:44
但这个方式其实比较老了,现在属于lagacy语法,一般不用了。
除非你很缺空间,一般就不建议了。

或者另一种实现方式,用 位操作实现也可以。

不过我不知道你所说的 “标志位”指的是不是这个
强者为尊,弱者,死无葬身之地
点赞  2016-12-13 13:46
引用: 辛昕 发表于 2016-12-13 13:46
但这个方式其实比较老了,现在属于lagacy语法,一般不用了。
除非你很缺空间,一般就不建议了。

或者另 ...

这里的标志位就是一包数据中记录的一些状态
点赞  2016-12-14 16:57
引用: 李嘉辉 发表于 2016-12-14 16:57
这里的标志位就是一包数据中记录的一些状态

位还是字节呢?
最好来一小段代码做个例子吧
强者为尊,弱者,死无葬身之地
点赞  2016-12-14 17:43
使用结构和共用体,结构中位字段。能实现你的想法。//头文件中 typedef struct _bit_field { unsigned int a : 5; unsigned int b : 3; unsigned int c : 20; unsigned int d : 4; } bit_field_s; typedef union _int_data{ unsigned int d; bit_field_s b; }int_data //函数中 int_data dat; dat.b.a =1;//注意这里赋值对数据D的影响。这里实际是影响对应的位。不要超出数据范围 dat.d =32; 本帖最后由 damiaa 于 2017-9-16 12:24 编辑
点赞  2017-9-16 12:21
引用: damiaa 发表于 2017-9-16 12:21
使用结构和共用体,结构中位字段。能实现你的想法。//头文件中
typedef struct _bit_field {
   unsigne ...

dat.b.a =1 & 0x1F;更好点
点赞  2017-9-16 22:04
引用: chybeyond 发表于 2017-9-16 22:04 dat.b.a =1 & 0x1F;更好点
这样很好。我比较懒,知道就行。反正编程自己一定要知道这些细节。 本帖最后由 damiaa 于 2017-9-17 00:13 编辑
点赞  2017-9-17 00:12
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复