gpt4 book ai didi

c++ - C++二进制数字数组转换为int值

转载 作者:行者123 更新时间:2023-12-01 14:57:39 24 4
gpt4 key购买 nike

大家好!现在我陷入了一个问题...
问题:

Given a binary number represented as an array, write a function thattakes the array and its size as a parameter, and returns the integervalue. You may assume that there are at least 1 and no more than 30numbers in the array and that all the values are either 0 or 1. Thearray is ordered with most significant binary digit at the start(index 0) and the least significant digit at the end.

Signature: int binary_to_number(int binary_digits[], int number_of_digits)

我写的功能在底部。
返回 number_of_digits <= 10 的int值可以正常工作。
如您所见,该问题说:“您可以假设数组中至少有1个且不超过30个数字”
我的问题是,即使有10个以上的数字(也许是30个数字),如何修复函数以返回正确的int值?
或者,我应该以不同的方式处理问题吗?如果是这样,我该怎么办?
#include<iostream>
#include<string>

int binary_to_number(int binary_digits[], int number_of_digits){
std::string bin_str;

for (int i=0; i<number_of_digits; i++) {
if (binary_digits[i] == 0) {
bin_str = "0" + bin_str;
} else if (binary_digits[i] == 1) {
bin_str = "1" + bin_str;
}
}
int bin_int = std::stoi (bin_str);
return bin_int;
}

最佳答案

您可以使用此算法来这样做:

int conversion(int array[], int len) {
int output = 0;
int power = 1;

for (int i = 0; i < len; i++)
{
output += array[(len - 1) - i] * power;
// output goes 1*2^0 + 0*2^1 + 0*2^2 + ...
power *= 2;
}

return output;
}

一个示例语句可以认为是:
int arr[16] = {1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1};
std::cout << conversion(arr, 16);

然后应该出来:
39321

可以找到我的代码的漂亮表示形式 here

希望能帮助到你。

关于c++ - C++二进制数字数组转换为int值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61775677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com