C# 编程来实现 ----数字转换成定长字符串 怎么通过 C# 编程来实现 ----数字转换成定长字符串??? 不能用函数直接转!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 int i = 1; string ss = i.ToString("d5"); Console.WriteLine(ss);换成定长是5的 不能用ToString来实现, 不过我好像记得是通过除以10 求余。 ToString("00000000000");楼上正解 定个长度,然后看这个数字转到字符串的length和他的差距,然后不足的话就在后面补 string.empty. 哦,就是先把数字 通过模求余来转换成字串.while(a>0){ ch=a%10; a=a/10;把ch放到字串里} 典型的作业题...string ConvertToString(int d,int len){ StringBuilder sb=new StringBuilder(); while(d>0) { byte dx=(byte)(d%10+48); sb.Insert(0,dx); d=d/10; } while(sb.Length<len) sb.Insert(0,48); return sb.ToString();}我还真是助人为乐,希望你能理解算法吧,既然你说是算法题。 +48是为了转换成ascii码,,数字和数字的ascii码就是差48 为什么要用byte啊 用char可以吗? 还是有些不懂 :1. 为什么 sb.Insert(0,dx); 每次都是0啊 ,不覆盖前面的了吗? 是不是用该 append? 能否解释一下啊 谢谢 C#中的char是Unicode字符,16位。而byte仍然是一个字节。 还是有些不懂 : 1. 为什么 sb.Insert(0,dx); 每次都是0啊 ,不覆盖前面的了吗? 是不是用该 append? 能否解释一下啊 谢谢---------------------------Insert是插入,因为这是从最低位开始计算,逐渐向左,所以,新加入的必须在原来的字符串之前,如果使用Append,附加到末尾,得到的结果就是反的。 芥子的速度还真快啊~~只不过最后还是ToString了一把 ^_return sb.ToString();给你出点题~~能否再改进一步.实现得更"原始"一点.... 想了一下,还是应该是char的,不应该是byte。去验证看看。 string s="";for(int i=0;i<sb.Length;i++){ s+=sb.Chars[i];}大概就是这个样子的吧。 哥们 到底是怎么对的啊 ? 怎么又不是byte了呢 ? 能给我正确的答案吗? 谢了用你之前的代码没问题吧? 低级错误啊低级错误: static string ConvertToString(int x,int len){ int d=x; StringBuilder sb=new StringBuilder(); while(d>0) { char dx=(char)(d%10+48); sb.Insert(0,dx); d=d/10; } while(sb.Length<len) sb.Insert(0,(char)48); return sb.ToString();}已验证版本。 你运行一下结果 好像不对 比如 用 tToString(55566,5)运行结果好像 是 55566 不会吧?我验证过的。难道又是我RPWT?把问题详细说说。 运行结果 跟你传过去的int数字一样 肯定不对吧? 先生,同志,一个是int,一个是string,能说一样么?看起来一样代表就是一样么?要不你试试ConvertToSting(67,8)看看会返回什么。 哥们 , 那我就不明白你的len了 是表示要想输出的字符串长度吗?? 我以为是int的长度? 请说明一下while(sb.Length<len) sb.Insert(0,(char)48); len是你要求输出的字符串长度。while(sb.Length <len) sb.Insert(0,(char)48); 如果长度不够,在前面补“0”。 当然,长度超出的话,还是按原样输出的,没有截断。比如:ConvertToString(1234,3)照样输出“1234”。 C# 获取音频属性 C# 旋转控件 的问题 问一个数据转换的奇怪问题 Smart Client离线数据处理问题 ras拨号问题求助 初次用C#,关于openFileDialog,赐教 access问题,进来就有分(在线等) 在C#中怎么实现高效扫描远程计算机端口? 用webbrowser来显示word,要求不能对word进行修改等操作,该怎么做呢?(高分求救)在线等!!!!!! Datetime转换成多少年多少月多少日多时多少分多少秒 如何转换效率高? 怎么区分“值”和“引用地址的值”? 如何用编程方式实现中文的datagridview例头
string ss = i.ToString("d5");
Console.WriteLine(ss);
换成定长是5的
楼上正解
,然后不足的话就在后面补 string.empty.
while(a>0)
{
ch=a%10;
a=a/10;
把ch放到字串里
}
{
StringBuilder sb=new StringBuilder();
while(d>0)
{
byte dx=(byte)(d%10+48);
sb.Insert(0,dx);
d=d/10;
}
while(sb.Length<len)
sb.Insert(0,48);
return sb.ToString();
}我还真是助人为乐,希望你能理解算法吧,既然你说是算法题。
数字和数字的ascii码就是差48
还是有些不懂 :
1. 为什么 sb.Insert(0,dx); 每次都是0啊 ,不覆盖前面的了吗? 是不是用该 append? 能否解释一下啊 谢谢
1. 为什么 sb.Insert(0,dx); 每次都是0啊 ,不覆盖前面的了吗? 是不是用该 append? 能否解释一下啊 谢谢---------------------------
Insert是插入,因为这是从最低位开始计算,逐渐向左,所以,新加入的必须在原来的字符串之前,如果使用Append,附加到末尾,得到的结果就是反的。
return sb.ToString();给你出点题~~
能否再改进一步.
实现得更"原始"一点....
for(int i=0;i<sb.Length;i++)
{
s+=sb.Chars[i];
}
大概就是这个样子的吧。
哥们 到底是怎么对的啊 ? 怎么又不是byte了呢 ? 能给我正确的答案吗? 谢了用你之前的代码没问题吧?
static string ConvertToString(int x,int len)
{
int d=x;
StringBuilder sb=new StringBuilder();
while(d>0)
{
char dx=(char)(d%10+48);
sb.Insert(0,dx);
d=d/10;
}
while(sb.Length<len)
sb.Insert(0,(char)48);
return sb.ToString();
}已验证版本。
运行结果好像 是 55566
把问题详细说说。
看起来一样代表就是一样么?要不你试试ConvertToSting(67,8)看看会返回什么。
哥们 , 那我就不明白你的len了 是表示要想输出的字符串长度吗?? 我以为是int的长度? 请说明一下
while(sb.Length<len)
sb.Insert(0,(char)48);
while(sb.Length <len)
sb.Insert(0,(char)48);
如果长度不够,在前面补“0”。
比如:ConvertToString(1234,3)照样输出“1234”。