我幾乎解決了這個練習: 二進制到十進制和後退轉換器 - 「開發一個轉換爲十進制數轉換爲二進制或二進制數的十進制數。」 因此,二進制到十進制轉換器完美工作,但另一個沒有。 convertToBinary()函數返回廢話,我不知道爲什麼。下面是代碼:C++二進制到十進制和背靠背換流
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
char* convertToBinary(int dec);
int convertToDec(const char* bin);
int main()
{
std::cout << convertToBinary(100) << std::endl; // wtf!
return 0;
}
char* convertToBinary(int dec)
{
char binary[15] = "";
int result;
for(int i = 0; dec >= 1; dec /= 2, ++i)
{
result = !((dec % 2) == 0);
binary[i] = result + 48;
}
for(int i = strlen(binary); strlen(binary) % 4 != 0; ++i) // add some zeros to make it look cool
binary[i] = '0';
for(int i = 0, j = strlen(binary)-1; i < j; ++i, --j) // reverse the array
{
char temp = binary[i];
binary[i] = binary[j];
binary[j] = temp;
}
std::cout << binary << std::endl; // looking good!
return binary;
}
int convertToDec(const char* bin)
{
int dec = 0;
int size = strlen(bin);
for(int i = 0; *bin; ++i, ++bin)
{
int ch = *bin - 48;
dec += ch * pow(2, size - i - 1);
}
return dec;
}
您不允許使用'按位operators'? –
垃圾來自返回本地數組,'二進制'的地址。你應該使用'std :: string'而不是char數組,否則你應該在堆上分配char數組。 –
而且還使用編譯器警告,你會知道這一點。 –