将 Long 转换为整数数组

Convert Long to Array of Integer Nums

如何转换 long 类型,例如:

123456789123456789

进入:

[1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9]

我问是因为我需要一种方法来迭代 C sharp 中的 Long,但 Long 显然不对数组使用 [ ],所以我似乎无法访问每个数字。

这很粗糙,但是您可以将 long 转换为字符串,然后将其分解为单个数字,然后像这样将它们转换回整数

var digits = 123456789123456789L.ToString().Select(d => int.Parse(d.ToString()));

要从数组转换回长整数,您可以这样做

var longFromDigits = digits.Aggregate(0L, (s, d) => s * 10 + d);

如果您不想使用 strings 进行操作,您可以在模运算的帮助下循环数字:

public static int[] Digits(long value) {
  if (value == 0)
    return new int[] { 0 };

  List<int> result = new List<int>();

  for (; value != 0; value /= 10)
    result.Add((int)Math.Abs(value % 10));

  result.Reverse();

  return result.ToArray();
}

然后

int[] digits = Digits(123456789123456789L);

编辑: 您所要做的就是 Aggregate digitslong 返回:

int[] digits = new [] { 1, 2, 3};

long result = digits.Aggregate(0L, (s, a) => s * 10 + a);