我有一個微控制器從很多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