怎么通过 C# 编程来实现 ----数字转换成定长字符串???  不能用函数直接转!!

解决方案 »

  1.   

     int i = 1;
                string ss = i.ToString("d5");
                Console.WriteLine(ss);
    换成定长是5的
      

  2.   

    不能用ToString来实现, 不过我好像记得是通过除以10  求余。
      

  3.   

    ToString("00000000000");
    楼上正解
      

  4.   

    定个长度,然后看这个数字转到字符串的length和他的差距
    ,然后不足的话就在后面补 string.empty.
      

  5.   

    哦,就是先把数字  通过模求余来转换成字串.
    while(a>0)
    {
      ch=a%10;
       a=a/10;
    把ch放到字串里
    }
      

  6.   

    典型的作业题...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();
    }我还真是助人为乐,希望你能理解算法吧,既然你说是算法题。
      

  7.   

    +48是为了转换成ascii码,,
    数字和数字的ascii码就是差48
      

  8.   

    为什么要用byte啊  用char可以吗? 
      

  9.   


    还是有些不懂 :
    1. 为什么 sb.Insert(0,dx); 每次都是0啊 ,不覆盖前面的了吗? 是不是用该 append? 能否解释一下啊 谢谢
      

  10.   

    C#中的char是Unicode字符,16位。而byte仍然是一个字节。
      

  11.   

    还是有些不懂 : 
    1. 为什么 sb.Insert(0,dx); 每次都是0啊 ,不覆盖前面的了吗? 是不是用该 append? 能否解释一下啊 谢谢---------------------------
    Insert是插入,因为这是从最低位开始计算,逐渐向左,所以,新加入的必须在原来的字符串之前,如果使用Append,附加到末尾,得到的结果就是反的。
      

  12.   

    芥子的速度还真快啊~~只不过最后还是ToString了一把 ^_
    return sb.ToString();给你出点题~~
    能否再改进一步.
    实现得更"原始"一点....
      

  13.   

    想了一下,还是应该是char的,不应该是byte。去验证看看。
      

  14.   

    string s="";
    for(int i=0;i<sb.Length;i++)
    {
       s+=sb.Chars[i];
    }
    大概就是这个样子的吧。
      

  15.   


    哥们 到底是怎么对的啊 ? 怎么又不是byte了呢 ? 能给我正确的答案吗? 谢了用你之前的代码没问题吧?
      

  16.   

    低级错误啊低级错误:
     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();
    }已验证版本。
      

  17.   

    你运行一下结果  好像不对  比如 用 tToString(55566,5)
    运行结果好像 是  55566
      

  18.   

    不会吧?我验证过的。难道又是我RPWT?
    把问题详细说说。
      

  19.   

    运行结果 跟你传过去的int数字一样  肯定不对吧?
      

  20.   

    先生,同志,一个是int,一个是string,能说一样么?
    看起来一样代表就是一样么?要不你试试ConvertToSting(67,8)看看会返回什么。
      

  21.   


    哥们 ,  那我就不明白你的len了  是表示要想输出的字符串长度吗?? 我以为是int的长度?  请说明一下
    while(sb.Length<len)
          sb.Insert(0,(char)48);
      

  22.   

    len是你要求输出的字符串长度。
    while(sb.Length <len) 
          sb.Insert(0,(char)48); 
    如果长度不够,在前面补“0”。
      

  23.   

    当然,长度超出的话,还是按原样输出的,没有截断。
    比如:ConvertToString(1234,3)照样输出“1234”。