我设法将一个char数组转换为一个字符串,但现在我想反过来,我尝试在我的代码中使用strcpy但它似乎没有给我我想要的东西。预期结果应为5,结果我得到40959
#include <iostream>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <algorithm>
using namespace std;
string DecToBin(int);
int BinToDec(string);
int main()
{
int x = 5;
string y = DecToBin(x);
reverse(y.begin(), y.end());
int z = BinToDec(y);
cout << z << endl;
}
string DecToBin(int num)
{
char res[16];
for (int n = 15; n >= 0; n--)
{
if ((num - pow(2, n)) >= 0)
{
res[n] = '1';
num -= pow(2, n);
}
else
{
res[n] = '0';
}
}
for (int n = 15; n >= 0; n--)
{
res[n];
}
return res;
}
int BinToDec(string num)
{
char x[16];
strcpy(x, num.c_str());
int res;
for (int n = 15; n >= 0; n--)
{
if (x[n] == '1')
{
res += pow(2, n);
}
}
return res;
}
答案 0 :(得分:1)
我可以找到以下错误:
res
在将DecToBin
复制到字符串中之前未在res
中终止,BinToDec
未在#include <iostream>
#include <bitset>
#include <string>
using namespace std;
string DecToBin(int num) {
std::bitset<16> b(num);
return b.to_string();
}
int BinToDec(string num) {
std::bitset<16> b(num);
return static_cast<int>(b.to_ulong());
}
,这对我来说就像是家庭作业,所以我将代码修复给你。如果你真的需要这种有效的东西,一种更简单的方法来实现这一点(不会被接受为任何地方的家庭作业)是
{{1}}