将二进制向量转换为十进制数组
Converting a binary vector into a decimal array
我创建了一个方法来生成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;
}
如果有人能帮我解决这个问题,我将不胜感激。
代码并不是那么糟糕,但它确实存在一些问题:
-
int
值在大多数平台上只能容纳32位,如果您只想要非负值,则可以容纳31位。因此,对于256位二进制数字,您需要使用其他内容。 -
int a = binary[len]; //having trouble right here
-我认为@PaulMcKenzie将这解释为试图声明一个具有可变数量元素的int数组(int a[len];
)。我认为这可能是将int
变量初始化为binary
中最后一项后面的元素。无论哪种方式都是错误的——但是你从来没有使用过a
,我也没有看到它有任何可能的用途。 -
不是一个错误,但是你应该明白
int decimalValue
不是十进制,它是一个整数,它很可能作为一组位存储在计算机中,只有在转换和以某种方式显示时才显示为十进制数,就像使用std::cout
打印时一样。 -
在sum循环中,
std::pow
不应该用于整数值,但幸运的是,位左移运算符可以用于获得2的整数幂:decimalValue = decimalValue + binary[i] * (1<<(len-i-1));
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 将字节数组转换为 C++ 中的十进制数
- 无符号字符数组的十进制 ASCII 值
- 用于解码二进制十进制的二维数组
- 计算字符串/数组元素的十六进制,然后将其转换为十进制
- C++ 一种方法,该方法将十进制值作为用布尔数组表示的二进制的整数返回
- 使用数组的十进制到二进制/十六进制
- 在字符数组中包含相当于字符的十进制数
- 将二进制向量转换为十进制数组