コードを修正しました:
//binary string input: if i enter abcd it gives its binary rep in 0's and 1's
第二に、たとえばバイナリ文字列が保存されているときに配列をループしたい:
int main() {
string msg;
int i;
int j;
int k;
int m[8];
int array[100];
int s;
int p_array[100];
// Taking a string as input from user............................................input
cout << "Please enter your msg :\n>";
getline(cin, msg);
//cout << "You entered: " << data;
for(i=0;i<=msg.size();i++){
for (j=0;j<8;j++){
m[j]= msg[i] % 2; //remainder gives us binary value
msg[i] = msg[i]/2;
}
int top, k,p;
for(k=0,top =7; k<8; k++,top--){
p_array[p]= m[top];
}
cout << array;
return 0;
}
問題 1: 出力には、abcd = 0x22fbd0 のこの値が表示されます。なぜ?バイナリの値が必要です。配列を使用せず、cout<< m[top] のみを使用すると、abcd のバイナリ形式が得られます。
問題 2: p_array をこのように埋めたい: 配列が埋められた後の次の 8 ビットは、トップ = 7 から 0 に埋められ、配列の位置 8 から埋め始め、その後、位置 15 から次の 8 ビットなどの上。どうすればそれを可能にできますか?
なぜ私はこれをしたいのですか:
これが完了したら、p_array 全体から一度に 16 ビットを選択して、次のように新しい配列に保存する必要があるためです。
p_array (最初の 16 ビット) + 新しい配列 (最初は 0) = newarray p_array からの次の 16 ビット + 新しい配列 = newarray ..... というように、新しい配列で最終的な合計を取得します。