我有一个微控制器从很多ADC采样,并通过无线电以非常低的比特率发送测量结果,带宽正在成为问题。在C中创建/解压大型位域的有效方法?
现在,每个ADC只给我们10位数据,并将其存储在一个16位整数中。是否有一种简单的方法将它们以确定性方式打包,以便第一次测量位为0,第二位为位10,第三位为位20等等。
更糟糕的是,单片机是小端的,我无法控制另一端计算机的字节序。
编辑:到目前为止,我喜欢@ MSN的回答是最好的,但我会的意见作出回应
@EvilTeach:我不知道确切的位模式将是有益的,或者如何最好只用文本格式化,但我会考虑它。
@Jonathan Leffler:理想情况下,我会将8个10位值包装成10个8位字节。如果它使处理更容易,我会解决4个字节中的3个值或8个字节中的6个值(尽管2相当于我,相同数量的'浪费'位)
我认为这将有助于显示您的传入位模式的图表和所需的结果。 – EvilTeach 2010-04-05 01:44:40
“位域”和“可移植性”很少以正面的方式放在同一句话中;位字段不可移植。您是否试图将3 x 10位值打包成32位整数,或者将6 x 10位值打包成64位整数,或者您是否试图在较长的内存跨度上连续存储? – 2010-04-05 01:53:43