簡単な答えは次のとおりです。
long int x = strtol(your_binary_c++_string.c_str(),(char **)NULL,2)
おそらく、以下のように int または long int を使用できます。
2 進数を 0 から n-1 (n は最上位ビット (MSB)) まで段階的にトラバースし、累乗で 2 を乗算し、合計を加算します。たとえば、1000 (バイナリで 8 に相当) を変換するには、次のようにします。
1 0 0 0 ==> 右から左へ
0 x 2^0 = 0 0 x 2^1 = 0; 0×2^2=0; 1×2^3=8; それらを一緒に追加します。つまり、0 + 0 + 0 + 8 = 8; これは 1000 に相当する 10 進数です。以下のプログラムを読んで、概念がどのように機能するかをよりよく理解してください。注意 : プログラムは 16 ビットの 2 進数 (非浮動) 以下でのみ動作します。不明な点があればコメントを残してください。必ず返信が来ます。
// 2 進数を 10 進数に変換するプログラム
#include <iostream>
#include <math.h>
int main()
{
int x;
int i=0,sum = 0;
// prompts the user to input a 16-bit binary number
std::cout<<" Enter the binary number (16-bit) : ";
std::cin>>x;
while ( i != 16 ) // runs 16 times
{
sum += (x%10) * pow(2,i);
x = x/10;
i++;
}
std::cout<<"\n The decimal equivalent is : "<<sum;
return 0;
}