如何将一个整数中的各个位上的数字存到一个数组中

cykevin 2010-07-09 12:45:28
比如:365
我如何才能分别得到3,6,5,呢?
...全文
2224 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
anbam 2010-07-09
  • 打赏
  • 举报
回复

int n = 365;
char[] ret = n.ToString().ToCharArray();
cykevin 2010-07-09
  • 打赏
  • 举报
回复
能不能说说取模的具体写法
showjancn 2010-07-09
  • 打赏
  • 举报
回复
2楼最简单。
模10效率高。
兔子-顾问 2010-07-09
  • 打赏
  • 举报
回复
无所谓了。int一共也才支持10位10进制数。慢步到哪去的。不用字符操作就用2楼的取模。
cykevin 2010-07-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dancingbit 的回复:]
循环,模10,得到的数从低位起。
[/Quote]

循环的退出条件是什么?
cykevin 2010-07-09
  • 打赏
  • 举报
回复
首先声明,我不考虑tochararray的做法,因为这个方法将会被执行很多次,我担心chararray在性能上会有问题。
dancingbit 2010-07-09
  • 打赏
  • 举报
回复
循环,模10,得到的数从低位起。
smthgdin_020 2010-07-09
  • 打赏
  • 举报
回复
tostring tochararray
cykevin 2010-07-09
  • 打赏
  • 举报
回复
下班,结贴。
houyizhinv 2010-07-09
  • 打赏
  • 举报
回复

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;
}

用这个吧 刚才那个没有测过
houyizhinv 2010-07-09
  • 打赏
  • 举报
回复

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;
}


jdngz 2010-07-09
  • 打赏
  • 举报
回复
toString
cykevin 2010-07-09
  • 打赏
  • 举报
回复
下班时候结贴 。
liherun 2010-07-09
  • 打赏
  • 举报
回复
其实很多人干软件是没出路的,和我一样
ldjwgwww 2010-07-09
  • 打赏
  • 举报
回复
循环,mod(10),得到的数再mod(10)。
showjim 2010-07-09
  • 打赏
  • 举报
回复
%10与/10,效率有问题,可以结合下面的函数实现x/10=x*0xcccccccd/0x800000000

private static uint div10(uint value)
{
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));
}
hztltgg 2010-07-09
  • 打赏
  • 举报
回复
我觉得转字符串和取10进制的模没什么区别,还不如转字符串方便,如果是2,4,8,16,32,这种模,那可以直接在位上想办法,效率提高的还有意义
wuyq11 2010-07-09
  • 打赏
  • 举报
回复
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();
lh1611 2010-07-09
  • 打赏
  • 举报
回复
循环,模10,得到的数从低位起
lh1611 2010-07-09
  • 打赏
  • 举报
回复
循环,模10,得到的数从低位起
加载更多回复(19)

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧