Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将int添加到数组中,将LSB转换为0c++;_C++_Arrays_Split_Int - Fatal编程技术网

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

C++ 将int添加到数组中,将LSB转换为0c++;,c++,arrays,split,int,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*,但我也不太确定如何

我得到了一个函数,它接受一个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;
}
int tmpNum=num1;
整数因子=1;
整数位数[4]={0};
//查找最有效数字的权重
对于(系数=1;系数0;++i)
{
数字[i]=tmpNum/系数;
tmpNum-=系数*位数[i];
系数/=10;
}

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

感谢您的快速回复。它会导致浮点异常,但至少我有一些东西要处理。Tyvm:)@matkapluku:修复了一个错误,请立即尝试。现在我已经在几个数字上进行了测试。