将 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);
如果您不想使用 string
s 进行操作,您可以在模运算的帮助下循环数字:
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
digits
让 long
返回:
int[] digits = new [] { 1, 2, 3};
long result = digits.Aggregate(0L, (s, a) => s * 10 + a);
如何转换 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);
如果您不想使用 string
s 进行操作,您可以在模运算的帮助下循环数字:
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
digits
让 long
返回:
int[] digits = new [] { 1, 2, 3};
long result = digits.Aggregate(0L, (s, a) => s * 10 + a);