課題として、Visual Studio でハフマン アルゴリズムの圧縮/解凍を行っています。8ビットを取得した後(10101010
たとえば)、それをバイトに変換したいと思います。これは私が持っているコードです:
unsigned byte = 0;
string stringof8 = "11100011";
for (unsigned b = 0; b != 8; b++){
if (b < stringof8.length())
byte |= (stringof8[b] & 1) << b;
}
outf.put(byte);
最初の 2 バイトのビット文字列はバイトとして正しく出力されますが、プッシュされているバイトが 3 バイトを超えると、同じバイトが複数回取得されます。私はビット操作に慣れていないので、誰かにこれについて説明してもらうか、機能する関数について説明してもらいたいと思っていました。