0

この仕様で説明されているランレングス エンコーディングをデコードしようとしています。それは言います:

カウントごとに 1、2、3、または 4 バイトの可能性があります。最初のカウント バイトの最初の 2 ビットには、カウントが 1、2、3、または 4 バイトに含まれていることを示す 0、1、2、3 が含まれます。次に、残りのバイト (6 ビット) は、カウントの上位 6 バイトを表します。次のバイトが存在する場合は、重要度の減少を表します

長さの最初の 2 ビットは正常に読み取れましたが、次の 14 ビットでエンコードされた値を取得する方法がわかりません。

長さを取得する方法は次のとおりです。

number_of_bytes = (firstbyte >> 6) + 1

データがビッグエンディアンであることがわかります。異なるエンディアン ビットでビット シフトとアンパックと再パックを試みましたが、期待する数値が得られません。

4

1 に答える 1

3

最下位 6 ビットを取得するには、次を使用します。

firstbyte & 0b111111

14ビット値を取得するには

((firstbyte & 0b111111) << 8) + secondbyte
于 2013-06-12T06:49:57.903 に答える