int n = 365; char[] ret = n.ToString().ToCharArray();
Func<int, int[]> GetDecBit = i => { List<int> bits = new List<int>(); while (i>10) { int n = i % 10; if (n == 0) break; bits.Add(n); i /= 10; } bits.Add(i); bits.Reverse(); return bits.ToArray(); }; GetDecBit(123456).ToList().ForEach(i => Console.Write(i));
不用lambda,static int[] GetDecBit(int i) { List<int> bits = new List<int>(); while (i > 10) { int n = i % 10; if (n == 0) break; bits.Add(n); i /= 10; } bits.Add(i); bits.Reverse(); return bits.ToArray(); } //调用 GetDecBit(123456)
稍微修改一下static int[] GetDecBit(int i) { List<int> bits = new List<int>(); while (i >= 10) { int n = i % 10; bits.Add(n); i /= 10; } bits.Add(i); bits.Reverse(); return bits.ToArray(); } 但是这样显然没有直接字符串的快啊。
去掉 if (n == 0) break; 即可。
E8400的CPU,整数运算速度为每秒270亿次....楼主有多少数量?
List<int> lst= new List<int>(); while (i >1) { lst.Add( i % 10); i /= 10; } if(i>0) lst.Add(i); lst.Reverse(); int[] arr=lst.ToArray();
int n = 365; int[] M =new int[n.ToString().Length]; for(int i = 0 ; i < n.ToString().Length ; i++) { M[n.ToString().Length - i] = n%10; n = n / 10; }
int n = 365; int LengthTmp = n.ToString().Length; int[] M = new int[LengthTmp]; for (int i = 0; i < LengthTmp; i++) { M[LengthTmp - i - 1] = n % 10; n = n / 10; } 用这个吧 刚才那个没有测过
int n = 365;
char[] ret = n.ToString().ToCharArray();
Func<int, int[]> GetDecBit = i =>
{
List<int> bits = new List<int>();
while (i>10)
{
int n = i % 10;
if (n == 0) break;
bits.Add(n);
i /= 10;
}
bits.Add(i);
bits.Reverse();
return bits.ToArray();
};
GetDecBit(123456).ToList().ForEach(i => Console.Write(i));
{
List<int> bits = new List<int>();
while (i > 10)
{
int n = i % 10;
if (n == 0) break;
bits.Add(n);
i /= 10;
}
bits.Add(i);
bits.Reverse();
return bits.ToArray();
}
//调用
GetDecBit(123456)
{
List<int> bits = new List<int>();
while (i >= 10)
{
int n = i % 10;
bits.Add(n);
i /= 10;
}
bits.Add(i);
bits.Reverse();
return bits.ToArray();
}
但是这样显然没有直接字符串的快啊。
if (n == 0) break;
即可。
E8400的CPU,整数运算速度为每秒270亿次....楼主有多少数量?
while (i >1)
{
lst.Add( i % 10);
i /= 10;
}
if(i>0) lst.Add(i);
lst.Reverse();
int[] arr=lst.ToArray();
{
ulong value64 = ((ulong)value << 2) + ((ulong)value << 3);
value64 += value64 << 4;
value64 += value64 << 8;
value64 += value64 << 16;
return (uint)((value64 + value) >> 35);
}
private static uint mod10(uint value)
{
ulong value64 = ((ulong)value << 2) + ((ulong)value << 3);
value64 += value64 << 4;
value64 += value64 << 8;
value64 += value64 << 16;
uint newValue = (uint)((value64 + value) >> 35);
return value - (newValue << 1) - (newValue << 3);
}
private static ushort div10(ushort value)
{
uint value32 = ((uint)value << 2) + ((uint)value << 3);
value32 += value32 << 4;
value32 += value32 << 8;
return (ushort)((value32 + value) >> 19);
}
private static ushort mod10(ushort value)
{
uint value32 = ((uint)value << 2) + ((uint)value << 3);
value32 += value32 << 4;
value32 += value32 << 8;
value32 = (value32 + value) >> 19;
return (ushort)(value - (value32 << 1) - (value32 << 3));
}
int n = 365;
int[] M =new int[n.ToString().Length];
for(int i = 0 ; i < n.ToString().Length ; i++)
{
M[n.ToString().Length - i] = n%10;
n = n / 10;
}
int n = 365;
int LengthTmp = n.ToString().Length;
int[] M = new int[LengthTmp];
for (int i = 0; i < LengthTmp; i++)
{
M[LengthTmp - i - 1] = n % 10;
n = n / 10;
}
用这个吧 刚才那个没有测过