将int添加到数组,将LSB转换为0 c ++

时间:2013-06-27 08:08:03

标签: c++ arrays split int

我得到了一个以int作为参数的函数,并将输出一个int []。

输入int是0到1000之间的数字。我的目标是将此数字转换为数组,其中每个索引都是输入数字的一个数字。如果输入数字中有两位数,则两个最低有效位将为0.

例如:

int num1 = 404;
int num2 = 42;

将有输出:

num1 = {4, 0, 4, 0}
num2 = {4, 2, 0, 0}

等等..

有没有聪明的方法来实现这一目标?一个是将数字转换为char *,但我不太确定如何使用它。我此刻迷失了。 顺便说一下:这不是作业;)

1 个答案:

答案 0 :(得分:2)

一种方法是使用itoa函数或std::stringstream类将数字转换为其符号表示。从那里,您可以从每个字符中减去'0',并将相应的数字设为0-9。

另一种方式是:

int tmpNum = num1;
int factor = 1;
int digits [4] = {0};

// Finding the most significant digit's weight
for (factor = 1; factor < num1; factor *= 10); 
factor /= 10;

// Finding digits from most to least significant
for (int i = 0; tmpNum > 0; ++i)
{
   digits[i] = tmpNum / factor;
   tmpNum -= factor * digits[i];
   factor /= 10;
}

这实质上是转换为10基(十进制)数。或者说是二进制编码的十进制数。