gpt4 book ai didi

c - 定义自定义时间结构

转载 作者:太空宇宙 更新时间:2023-11-04 08:54:58 24 4
gpt4 key购买 nike

协议(protocol)是:

(four byte hour/minute/second field, for example (12:13:56 110))
bit00~bit01: 00
bit02~bit11: millisecond (110)
bit12~bit15: second-1s (6)
bit16~bit18: second-10s (5)
bit19~bit22: minute-1s (3)
bit23~bit25: minute-10s (1)
bit26~bit29: hour-1s (2)
bit30~bit31: hour-10s (1)

如何定义上层结构?

我试图定义这个:

struct xxx_time 
{
unsigned int pad:2;
unsigned int second0:4;
unsigned int second1:3;
unsigned int minute0:4;
unsigned int minute1:3;
unsigned int hour:4;
unsigned int hour1:2;
};

这样定义对吗?有没有更好的办法?

最佳答案

结构中位字段的内存布局是编译器定义的。无法保证编译器会按照您列出的顺序排列结构字段。例如,填充字段可能不是结构中的前两位。参见 Memory layout of struct having bitfieldsWhy bit endianness is an issue in bitfields? .

所以不可以,您不能使用带有位字段的结构来映射已定义的底层内存布局。您将不得不使用移位和掩码来读取和写入具有给定内存布局的缓冲区。

关于c - 定义自定义时间结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17667025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com