1

.bin からバイトを読み取る必要がありますが、特定のビットから開始します。次に例を示します。

この 2 バイトがある場合:

01010111 10101100

プログラムは、ビット番号 3 (またはインデックス 2) から開始して、任意のビットから読み取ることができる必要があります。

01[010111 10]101100

結果は 01011110 になるはずです

開始ビットがバイトの最後のビットである場合を除いて、任意のビットから始まるバイトを読み取ることができます: 0101011[1 ...] //何か違うものを返します..

私のコードは次のとおりです。

byte readByte(int indexInBits, byte[] bytes)
    {
        int actualByte = (indexInBits+1)/8;
        int indexInByte = (indexInBits)%8;
        int b1 = bytes[actualByte] << indexInByte;
        int b2 = bytes[actualByte+1] >> 8 - indexInByte;
        return (byte)(b1 + b2);
    }

それの何が問題なのですか?

ありがとう

4

1 に答える 1

0
byte ReadByte(int index, byte[] bytes)
{
    int bytePos = index / 8;
    int bitPos = index % 8;
    int byte1 = bytes[bytePos] << bitPos;
    int byte2 = bytes[bytePos + 1] >> 8 - bitPos;
    return (byte)(byte1 + byte2);
}

現時点では確認できませんでしたが、期待どおりに動作するはずです。

于 2013-04-19T13:03:44.293 に答える