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

Adding int to array, converting LSB to 0 c++

本文关键字:转换 LSB c++ 数组 添加 int      更新时间:2023-10-16

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

输入int是一个介于0和1000之间的数字。我的目标是将这个数字转换成一个数组,其中每个索引都是输入数字的一位数字。如果输入数字中有两个数字,那么两个最低有效位将为0。

例如:

int num1 = 404;
int num2 = 42;

将有输出:

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

等等…

有什么聪明的方法可以做到这一点吗?一种方法是将数字转换为char*,但我也不太确定如何使用它。我此刻有点不知所措。顺便说一句:这不是家庭作业;)

一种方法是使用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个基数(十进制)。或者精确地说是二进制编码的十进制。