私は文字として読み込まれるバイナリファイルを持っています。それぞれのキャラクターは、他の誰かによって左の不明な回数(ラップされていると仮定)にビットシフトされました。私はそれぞれのキャラクターを読んでから、右にシフトしたいと思っています(別の方法を考え出していないので、シフトする回数は手作業で考えなければならないでしょう)。文字を折り返しでビットシフトしますか? C++
だから、私の現在の考えは、XORを使用し、その後一時にコピーを作成し、私は文字で読むということですと:
char letter; //will hold the read in letter
char temp; //will hold a copy of the letter
while(file.read(&letter, sizeof(letter)) //letter now holds 00001101
{
temp = letter; //temp now holds 00001101
letter >>= 1; //shift 1 position to the right, letter now holds 00000110
temp <<= 7; //shift to the left by (8-1), which is 7, temp now holds 10000000
letter ^= temp; //use XOR to get the wrap, letter now holds 10000110
cout << letter;
}
私の疲れ頭で理にかなっているが、それは動作しません。..私は理由を理解できません。 charのサイズは1バイトなので、私は8ビットで扱うだけだと思った。
ご協力いただければ幸いです。
EDIT:解決済み。みんなに感謝します。このコミュニティを愛しています、皆さんは素晴らしいです!
あなたは」あなたが期待していることを教えてくれました。実際には何を得ていますか? –
@sftrabbitいくつかの謎めいた混乱。 –
ループごとに2回 'letter 'に読み込み、最初の読み込み値を破棄します。 – jthill