そのため、私が使用した元の方法が機能しました。誰かが再びこの問題を抱えている場合に備えて、私も別のものを思いついた。
一度に4ビットを評価し、その評価に基づいて数値を作成するサブルーチンを作成しました。一部のCスタイルの擬似コードでは、次のようになります。
16bitSignedInt bin; //binary being analyzed
int value; //number being built
for (int i = 0; i < 4; i++) // while 0-3, for each nibble of the 16 bits
{
if (bin.bit15 = 1)
value += 8; // dominate bit in nibble
bin <<= 1; // left shift 1
if (bin.bit15 = 1)
value += 4; // 2nd bit in nibble
bin <<= 1; // left shift 1
if (bin.bit15 = 1)
value += 2; // 3rd bit in nibble
bin <<= 1; // left shift 1
if (bin.bit15 = 1)
value += 1; // last bit in nibble
bin <<= 1; // left shift 1
//do work with value
}
粗野ですが効果的です。