【发布时间】:2012-03-05 10:06:31
【问题描述】:
我想学习如何在 C# 中将 int 数组转换为 int。
但是我想用数组中的值附加 int。
例子:
int[] array = {5, 6, 2, 4};
将被转换为等于 5624 的 int。
提前感谢您的帮助。
【问题讨论】:
-
如果数组中的数字包含一个无法放入
int的数字会怎样? -
数组项不在 0...9 范围内怎么办?
我想学习如何在 C# 中将 int 数组转换为 int。
但是我想用数组中的值附加 int。
例子:
int[] array = {5, 6, 2, 4};
将被转换为等于 5624 的 int。
提前感谢您的帮助。
【问题讨论】:
int的数字会怎样?
只需将每个数字乘以 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 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;
}
【讨论】:
尝试以下方法:
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];
}
【讨论】:
4265 - 这不是我们想要的结果。
在 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)
【讨论】:
只是为了好玩......
arr.Select((item, index) => new { Item = item, Power = arr.Length - (index - 1) }).ToList().ForEach(item => total += (int)(Math.Pow(10, item.Power) * item.Item));
【讨论】:
这样就可以了:
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;
}
【讨论】:
var finalScore = int.Parse(array
.Select(x => x.ToString())
.Aggregate((prev, next) => prev + next));
【讨论】:
你可以使用字符串流 (包括“流”)
使用命名空间标准; 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..
【讨论】:
如果你想将 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];
我找不到通过高性能更好地转换的方法,
【讨论】: