加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C中创建/解压缩大型位域的有效方法?

发布时间:2020-12-16 09:27:06 所属栏目:百科 来源:网络整理
导读:我有一个微控制器的微控制器采样,并以非常低的比特率通过无线电发送测量结果,带宽正成为一个问题. 现在,每个ADC只给出10位数据,并存储在16位整数中.是否有一种简单的方法以确定的方式打包它们,以便第一次测量位于第0位,第二位于第10位,第三位在第20位,等等?
我有一个微控制器的微控制器采样,并以非常低的比特率通过无线电发送测量结果,带宽正成为一个问题.

现在,每个ADC只给出10位数据,并存储在16位整数中.是否有一种简单的方法以确定的方式打包它们,以便第一次测量位于第0位,第二位于第10位,第三位在第20位,等等?

更糟糕的是,微控制器是小端的,我无法控制另一端的计算机的字节序.

编辑:到目前为止,我最喜欢@ MSN的答案,但我会回复评论

@EvilTeach:我不确定确切的位模式是否有用,或者如何最好地用文本格式化它,但我会考虑它.

@Jonathan Leffler:理想情况下,我将8个10位值打包成10个8位字节.如果它使处理更容易,我将解决4个字节中的3个值或8个字节中的6个值(尽管2相当于我,相同数量的’浪费’位)

解决方法

使用位0和31确定字节顺序并在中间打包3个10位值.测试匹配字节顺序的一种简单方法是将位0设置为0,将位31设置为1.在接收端,如果位0为1,则断言位31为0并交换字节序.否则,如果位0为0,则断言位31为1并提取3个值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读