简短的回答可能是:
long int x = strtol(your_binary_c++_string.c_str(),(char **)NULL,2)
可能您可以使用 int 或 long int ,如下所示:
只需一步一步地遍历二进制数,从 0 到 n-1,其中 n 是最高有效位(MSB),将它们乘以 2 以提高幂,然后将总和相加。例如要转换 1000(相当于 8 的二进制),只需执行以下操作
1 0 0 0 ==> 从右到左
0 x 2^0 = 0 0 x 2^1 = 0;0 x 2^2 = 0; 1 x 2^3 = 8;现在将它们加在一起,即 0+0+0+8 = 8; 这是 1000 的十进制等值。请阅读下面的程序以更好地理解这个概念是如何工作的。注意:该程序仅适用于 16 位二进制数(非浮点数)或更少。如果有任何不清楚的地方,请发表评论。您一定会收到回复。
// 程序将二进制转换为其十进制等价物
#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;
}