2016-04-20 8 views
1

ユーザーが入力した数値を取り込み、配列に格納するプログラムを作成しています。プログラムは値を10進数に変換し、新しい配列に格納します。バイナリ値を正しいビットサイズに変換するのに問題があります。正しいビットサイズでC++でDecimalをBinaryに変換する

たとえば、ユーザは34と入力します。 私のプログラムはそれらを格納し、バイナリに変換して、11100になります。 011100を保存するにはどうすればよいですか?

文字配列や文字列に変換する必要があるとは思いますが、どの手順を実行する必要があるかわかりません。

+4

std :: string binary = std :: bitset <8>(num).to_string();を使用できます。ここで8は必要なバイナリの長さを表し、numはユーザーが渡したnumです。 –

+2

3が11の場合は正しい出力を得ていますが、まだ011と同じですので、その点が表示されません。あなたの問題は、ユーザータイプの高さと追加したいゼロの数を決して知らないことだと考えてください。あなたがしたいことは無意味だと結論づけてください。 – FieryCod

+0

3ビットのビットフィールドを使用しているのでなければ、3ビットだけを格納することはできません。まだバイナリに格納していても、 '11' == '011'です。あなたの質問は理にかなっていません。 – EJP

答えて

0

私はあなたが何をしようとしているが、このだと思う:あなたはこれを試すことができ

:私は以下に示すとほぼ同じことをした

void Convert(int Number, char *Array, int Bits) { 
    int Bit; 

    for (Bit = 0; Bit < Bits; Bit++) { 
     if ((Number & (1 << (Bits - (Bit + 1)))) > 0) { 
     Array[Bit] = '1'; 
     } else { 
     Array[Bit] = '0'; 
     } 
    } 
} 
0

//Decimal to Binary 
char* dTb(int num, unsigned bit) 
{ 
    char *binStr = new char (bit + 1); 
    int len = bit; 

    binStr[bit] = '\0'; 
    while (bit--) binStr[bit] = '0'; 

    if (num == 0) 
     return binStr; 

    int r; 
    while (num && len) 
    { 
     r = num % 2; 
     binStr[--len] = r + '0'; 
     num /= 2; 
    } 

    return binStr; 
} 

ありがとうございました!

+1

'char * binStr = new char [bit + 1];'を意味しませんか? – Entropy

+0

はい、正確です。私はそれに応じてそれを変更した。ありがとう!!! –

関連する問題