2013-06-12 145 views
0

我試圖解碼本規範here中描述的運行長度編碼。 它說:從2字節讀取14位數字

每個計數可能有1,2,3或4個字節。第一個計數字節的前兩位包含0,1,2,3,表示計數包含在1,2,3或4個字節中。然後剩餘的字節(6位)表示計數的六個最高有效字節。下一個字節(如果存在的話)表示遞減的意義

我已經成功讀取了長度的前2位,

我繼承人如何得到長度:

number_of_bytes = (firstbyte >> 6) + 1 

它接縫數據是大端。我嘗試了位移,拆包和重新包裝不同的字節順序,我無法獲得我期望的數字。

回答

3

要獲得6個最低顯著位,使用

firstbyte & 0b111111 

因此要獲得一個14位的值

((firstbyte & 0b111111) << 8) + secondbyte 
+0

爲教學目的,我會寫的二進制常量'的所有8位0b00111111' –

+0

謝謝,先生,這解決了它。 –