将单个数字的Int数组转换为多个数字的Int

时间:2012-01-18 13:36:06

标签: c# arrays string int

我制作了一个数组,输入一个输入说“12345”并将其拆分为以下

0 - 1
1 - 2
2 - 3
3 - 4
4 - 5

然后我将这些数字稍微调整一下以获得

0 - 5
1 - 2
2 - 3
3 - 4
4 - 1

一旦完成,我想返回获取此数组并创建新订单的int,因此我想要的输出是“52341”

我虽然解决了这个问题,但是当我运行我的代码时,我发现以下错误'输入字符串的格式不正确。'

所以这是我的代码,任何人都可以帮忙吗?

C#

string result = number[i].ToString();
var intList = result.Select(digit => Int64.Parse(digit.ToString()));
Int64[] Circle = intList.ToArray();

int order = Circle.Length;
int check = 0;
while (check < order)
{
    numholder = Circle[0];
    Array.Copy(Circle, 1, Circle, 0, Circle.Length - 1);

    Circle[order - 1] = numholder;
    //string p = Circle.ToString();
    //string p = Circle.ToString();
    Int64 h = Int64.Parse(Circle.ToString());

4 个答案:

答案 0 :(得分:3)

最简单的方法是完全跳过字符串,并使用小学的多位数字的定义:

var res = 0L;
var mul = 1L;
foreach (var digit in Circle) {
    res += mul*digit;
    mul *= 10;
}

您还可以从数字中创建一个字符串并对其进行解析,但效率较低:

var numStr = string.Join("", Circle.Select(digit => digit.ToString()));
var num = long.Parse(numStr);

答案 1 :(得分:2)

我认为你的问题就在这一行:

Int64 h = Int64.Parse(Circle.ToString());

这是因为Circle.ToString()返回Int64[],这不是正确的Int64

我认为你应该将这一行与String.Join

一起使用
Int64 h = Int64.Parse(String.Join("", Circle));

答案 2 :(得分:0)

您缺少代码,但是无法对数据进行加入?

string newresult = order.Join("");

这里没有VS,所以不能检查代码,但这样的东西应该可以工作

答案 3 :(得分:0)

int[] singleDigitArray = new int[] { 1, 2, 4, 5, 8};
int num = 0;
for (int i = singleDigitArray.Length - 1; i >= 0; i--)
{
    num += ((int)Math.Pow(10, singleDigitArray.Length-i-1)) * singleDigitArray[i];
}