如何将int数组转换为int?

时间:2012-03-05 10:06:31

标签: c# .net arrays math int

我想学习的方法是将一个int数组转换为C#中的int。

但是我想用数组中的值附加int。

示例:

int[] array = {5, 6, 2, 4};

将转换为等于5624的int。

感谢您提前提供任何帮助。

13 个答案:

答案 0 :(得分:14)

简单地将每个数字乘以10 ^他在数组中的位置。

int[] array = { 5, 6, 2, 4 };
int finalScore = 0;
for (int i = 0; i < array.Length; i++)
{
    finalScore += array[i] * Convert.ToInt32(Math.Pow(10, array.Length-i-1));
}

答案 1 :(得分:7)

int output = array
    .Select((t, i) => t * Convert.ToInt32(Math.Pow(10, array.Length - i - 1)))
    .Sum();

答案 2 :(得分:5)

另一种简单的方法:

int[] array =  {5, 6, 2, 4};
int num;
if (Int32.TryParse(string.Join("", array), out num))
{
    //success - handle the number
}
else
{
    //failed - too many digits in the array
}

这里的诀窍是使数组成为一串数字,然后将其解析为整数。

答案 3 :(得分:3)

使用此代码,您只想将int数组连接起来,请使用以下代码

String a;
int output;
int[] array = {5, 6, 2, 4};
foreach(int test in array)
{
a+=test.toString();
}
output=int.parse(a);
//where output gives you desire out put

这不是一个确切的代码。

答案 4 :(得分:2)

尝试以下方法:

        int[] intArray = new int[] { 5, 4, 6, 1, 6, 8 };

        int total = 0;
        for (int i = 0; i < intArray.Length; i++)
        {
            int index = intArray.Length - i - 1;
            total += ((int)Math.Pow(10, index)) * intArray[i];
        }

答案 5 :(得分:2)

int result = 0;
int[] arr = { 1, 2, 3, 4};
int multipicator = 1;
for (int i = arr.Length - 1; i >= 0; i--)
{
   result += arr[i] * multipicator;
   multipicator *= 10;
}

答案 6 :(得分:0)

如果您已了解十进制系统的工作原理,这将很容易。

因此,让我为您解释一下:十进制数字包含十位数的单位数。

这意味着您必须遍历此数组(向后!)并乘以10 ^

例如5624表示:(5 * 10 ^ 3)+(6 * 10 ^ 2)+(2 * 10 ^ 1)+(4 * 10 ^ 0)

请另请考虑:http://en.wikipedia.org/wiki/Horner_scheme

答案 7 :(得分:0)

这样做:

public int DoConvert(int[] arr)
{

  int result = 0;

  for (int i=0;i<arr.Length;i++)
    result += arr[i] * Math.Pow(10, (arr.Length-1)-i);

  return result; 
}

答案 8 :(得分:0)

只是为了好玩......

arr.Select((item, index) => new { Item = item, Power = arr.Length - (index - 1) }).ToList().ForEach(item => total += (int)(Math.Pow(10, item.Power) * item.Item));

答案 9 :(得分:0)

var finalScore = int.Parse(array
    .Select(x => x.ToString())
    .Aggregate((prev, next) => prev + next));

答案 10 :(得分:0)

你可以使用字符串流 (包括“sstream”)

使用命名空间std; int main(){

int arr[3]={3,2,4};     //your array..

stringstream ss;

ss<<arr[0];   //this can be run as a loop
ss<<arr[1];
ss<<arr[2];


int x;
ss>>x;

cout<<x;        //simply the int arr[3] will be converted to int x..

答案 11 :(得分:0)

在C#3.0及更高版本中:

array.Select((t, i) => t * Convert.ToInt32(Math.Pow(10, array.Length - i - 1))).Sum();

答案 12 :(得分:0)

使用 LINQ

long result =  array.Aggregate((result, x) => result * 10 + x);