Как конвертировать массив int в int?

То, что я хотел бы узнать, как сделать, это преобразовать массив int в int в C#.

Однако я хочу добавить int со значениями из массива.

Пример:

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

Будет преобразован в int, равный 5624.

Спасибо за любую помощь заранее.

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));
}
int output = array
    .Select((t, i) => t * Convert.ToInt32(Math.Pow(10, array.Length - i - 1)))
    .Sum();

Еще один простой способ:

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
}

Хитрость в том, чтобы сделать массив строкой цифр, а затем проанализировать его как целое число.

Используйте этот код, который вы хотите объединить в массиве 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

Это не точный код.

Попробуйте следующее:

        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];
        }
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;
}

Вы можете использовать поток строк (включая "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..

В C# 3.0 и выше:

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

Использование LINQ

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

Это было бы легко, если бы вы поняли, как работает десятичная система.

Итак, позвольте мне объяснить это для вас: десятичная цифра содержит однозначные числа по основанию десять.

Это означает, что вам нужно перебрать этот массив (назад!) И умножить на 10 ^

Для примера 5624 означает: (5*10^3) + (6*10^2) + (2*10^1) + (4*10^0)

Пожалуйста, рассмотрите также: http://en.wikipedia.org/wiki/Horner_scheme

если вы хотите преобразовать int[] в массив int?[] , я просто использую цикл for :(

       int[] First = Person.Select(p => p.ShiftID).ToArray();
                int?[] converted = new int?[First.Length];
                for (int im = 0; im < First.Length; im++)
                    converted[im] = First[im];

Я не могу найти способ конвертировать лучше с высокой производительностью,

И просто для удовольствия...

arr.Select((item, index) => new { Item = item, Power = arr.Length - (index - 1) }).ToList().ForEach(item => total += (int)(Math.Pow(10, item.Power) * item.Item));
var finalScore = int.Parse(array
    .Select(x => x.ToString())
    .Aggregate((prev, next) => prev + next));

Это сделает это:

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; 
}
Другие вопросы по тегам