我创建了一个方法来生成n位数字为256位的随机二进制数字。为了继续我的程序,我需要把我的二进制值的矢量,并将其放入一个十进制数组,然后将该数字转换成十进制数字int
。下面的函数创建随机二进制向量,并尝试转换为十进制。我无法将我的二进制向量转换为小数。将二进制向量转换为十进制数组
int random_binary(int n, int m){
vector<int> binary;
for(int i = 0; i < n; i++)
{
m = rand() % 2;
binary.push_back(m);
}
binary.push_back(1);
int j;
for(j = 0; j < binary.size(); j++)
{
cout << binary[j];
}
cout <<"\n";
int len = binary.size();
int a = binary[len]; //having trouble right here
int decimalValue = 0;
for (int i = len-1; i>= 0; i--)
{
decimalValue = decimalValue + binary[i]*pow(2,len-i-1);
}
return decimalValue;
}
如果有人能帮助解决这个问题,将不胜感激。
Errr,号码是号码,数字表示是数字表示?我更喜欢基地20顺便说一句,有十个手指和十个脚趾。 –
@ ClaytonTM9你似乎有一个主要的低音。 –
@ ClaytonTM9 - 1)'int len = binary.size(); int a = binary [len];'这是无效的C++。数组必须使用常量作为条目数来声明。 2)'pow(2,len-i-1)' - 如果[exponent是一个整数],不要使用'pow'(http://stackoverflow.com/questions/25678481/why-does-pown- 2-return-24-when-n-5 -with-my-compiler-and-os) – PaulMcKenzie