すべてのASCII値が256までの.txtファイル内のすべてのASCII値をXORしたいと思う。私の入力.txtファイルには16進形式のASCII値が入っている。例えば、私の入力ファイルは"49 f3 54 f3 5f f3 47 f4 43 e8 49 e9"であり、0x01、0x02、0x03などの各値をXORして、結果を新しいすべての16進数の行。私は以下のコードをC++で書いていますが、常に元の内容を表示します。ASCII値をXOR入力にループする
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
int main() {
vector <char> decrypt;
char ch;
int index;
ifstream infile;
ofstream outfile;
infile.open("prob3.txt");
outfile.open("results3_p1.txt");
if(!infile)
{
cout << "Error opening input file" << endl;
return 0;
}
for (int a = 0; a < 256; a++)
{
while(infile >> hex >> index)
{
ch = index^a;
decrypt.push_back(ch);
}
for (int i=0; i<decrypt.size(); i++) // Print the results
{
outfile << decrypt[i];
}
outfile << endl;
}
return 0;
}
"decrypt.clear()"を使用してベクターをクリアしようとしましたが、最初の繰り返しの後に何も印刷されません。私のコードのどの部分が間違っているのか分かりません。
私のコードの出力 -
私は間違いを修正するためにコードを編集しました –
動作しますか?私にとってはまだコードが動作していないように見えます。サンプルを追加しました。コピー貼りですので、いくつかのタイプミスがあります。しかし一般的にはうまくいくはずです。あなたはおそらく(char) – vadim
にキャストする必要があります@vadim –