0

文字列の各文字を配列内のビットのシーケンスとして取得するか、ループ内でトラバースする必要があります。どちらの方法でも機能します。これは私がASMで行っていた方法であり、C++でどのように実行できるかわかりません。

編集:私はasmでいつか行ったことを複製しようとしています。メモリ内のファイルを読み取り、ビットごとにトラバースし、各ビットを操作し、さらに暗号化して保存します。

基本的に単純な暗号化。それは宿題でもプロジェクトでもありません。

4

4 に答える 4

6

標準ライブラリには、そのためのクラスがありstd::bitsetます。それはあなたが必要とするものかもしれません。

于 2012-12-11T16:01:38.217 に答える
6

ビット演算子を使用して反復できます。

unsigned char c = 'a'
for(int i = 0; i < 8; i++)
{
  std::cout << (c >> i) & 1 << std::endl;
}

cこれにより、位置が右にシフトし、iビット単位のANDを使用して最下位ビットの値を取得します。

于 2012-12-11T16:02:47.563 に答える
2

ビットマスクおよびビット単位の演算子、、、および/またはを使用して調べたいと&思うでしょ|う。それらをbool型の配列に格納したいと思うでしょう。>><<bool bitArray[256];

もちろんunsigned char、ビットの束を格納するためだけに使用するのが標準的な方法です。

于 2012-12-11T16:01:01.737 に答える
2

文字をループして、ビットマスクでビットを確認するだけです。

char c;
for (int i = 0; i < 8; ++i) {
    bool is_set = c & (1 << i);
    std::out << "Bit " << i << ": " << is_set << '\n';
}

または文字列

std::string s;
for (auto p = s.begin(); p != s.end(); ++p) {
    char c = *p;
    // loop over the bits
}
于 2012-12-11T16:07:29.257 に答える