2016-10-21 16 views
0

文字列入力があり、10進数に変換したいので問題があります。C++は文字列入力からバイナリを10進数に変換します

は、ここに私のコードです:

私は2進数から10進数へ変換されたからinputCheckerを表示するには、「進」である最後の1を作りたい
#include <iostream> 
#include <string> 
#include <stdlib.h> 

using namespace std; 

string inputChecker; 
int penghitung =0; 

int main(){ 
    string source = "10010101001011110101010001"; 

    cout <<"Program Brute Force \n"; 
    cout << "Masukkan inputan : "; 
    cin >> inputChecker; 

    int pos =inputChecker.size(); 
    for (int i=0;i<source.size();i++){ 
     if (source.substr(i,pos)==inputChecker){ 
      penghitung +=1; 
     } 
    } 
    if (source.find(inputChecker) != string::npos) 
     cout <<"\nData " << inputChecker << " ada pada source\n"; 
    else 
     cout <<"\nData "<< inputChecker <<" tidak ada pada source\n"; 

    cout <<"\nTotal kombinasi yang ada pada source data adalah " <<penghitung <<"\n"; 
    cout <<"\nDetected karakter adalah " <<inputChecker; 
    cout <<"\nThe Decimal is :" <<inputChecker; 
} 

。 C++でバイナリから10進に簡単に変換する関数はありますか?

事前のおかげで:))

+0

'std :: bitset'を使用してください。 –

+0

この投稿はあなたに役立つかもしれません: http://stackoverflow.com/questions/16043377/conversion-of-string-to-decimal – asantacreu

答えて

1

使用std::strtol塩基として2を有します。ブルートフォース:たとえば、

auto result = std::strtol(source.c_str(), nullptr, 2); 
+0

結果には名前がありません。型名 –

+0

次にC++ 11は使用していません。 'auto'の代わりに' long'を使うことができます。 –

+0

今は、nullptrが宣言されていないと言います。私は何を使うべきですか? –

0

ため:

static const std::string text_value("10010101001011110101010001"); 
const unsigned int length = text_value.length(); 
unsigned long numeric_value = 0; 
for (unsigned int i = 0; i < length; ++i) 
{ 
    value <<= 1; 
    value |= text_value[i] - '0'; 
} 

値がシフト又は2で乗算され、次に数字は累積和に加算されます。

10進数の数字を内部表現に変換するのが原則と同じです。

関連する問題