C++ 将int添加到数组中,将LSB转换为0c++;
我得到了一个函数,它接受一个int作为参数,并将输出一个int[] 输入int是一个介于0和1000之间的数字。我的目标是将这个数字转换成一个数组,其中每个索引都是输入数字的一个数字。如果输入数字中有两个数字,则两个最低有效位将为0 例如: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 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:修复了一个错误,请立即尝试。现在我已经在几个数字上进行了测试。