在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个值.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |