我在C中编写了一个将二进制数转换为十进制数的函数:
while (n != '\n')
{
scanf("%c",&n);
if (n == '1')
var = var * 2 + 1;
else if (n == '0')
var *= 2;
}
现在我想知道如何将每个小数位数放在char数组中。
Ex: var = 145 是转换后的数字,因此数组应如下所示:
char array[n_bit]={1,4,5};
答案 0 :(得分:0)
这应该做你需要的(至少我理解):
// returns the number of decimal digits in 'num'
unsigned int getNumDigits(unsigned int num)
{
unsigned int res = 1; // when the 'num' is 0, the number of digits is 1
num /= 10;
while (num)
{
res++;
num /= 10;
}
return res;
}
// fill the 'array' with chars which represent the digits in the given 'inputNum'
// so that if inputNum=135, array[0]='1', array[1]='3' and array[2]='5'
// assuming 'array' contains nothing but '\0's when given as input
int fillDecimalVector(unsigned int inputNum, char array[], size_t arr_size)
{
unsigned int fillIdx = 0;
unsigned int numOfDigits = getNumOfDigits(inputNum);
if (numOfDigits > arrSize)
return -1;
// when the 'inputNum' initial value is 0 we are expected to fill '0'
while (inputNum || !fillIdx)
{
array[numOfDigits - fillIdx - 1] = '0' + (char)(inputNum % 10);
fillIdx++;
inputNum /= 10;
}
return 0;
}
注意强>
我没有尝试编译它,因此可能会出现轻微的语法错误。