對於一個任務,我在Visual Studio中進行Huffman算法的壓縮/解壓縮。在我得到8位(例如10101010
)之後,我想將它轉換爲一個字節。這是我的代碼:C++ bitstring到字節
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);
第一對夫婦位串輸出正確的字節但當時如果我推超過3個字節,我得到了相同的字節多次。我不熟悉位操作,並且要求有人通過這個步驟來指導我或者通過一個工作函數。
你爲什麼| = 1 << b if b is > = stringof8.length()? – 2014-10-30 15:23:14
什麼是'stringof8'? – 2014-10-30 15:24:40
您的stringof8是一個ASCII字符串,代表二進制位嗎?如果是這樣,那麼ascii「1」首先通過從ascii「0」中減去ascii「1」轉換爲數字1,然後您可以執行位操作。 – DNT 2014-10-30 15:33:06