SORU
10 Temmuz 2013, ÇARŞAMBA


Nasıl C bir Dize için bir İnt dönüştürebilirim# Olabilirdi kullanmadan()?

Herhangi bir yerli işlevselliği sağlar kullanmadan bir dizeye aşağıdaki tamsayı değişkeni dönüştürmek.

public string integerToString(int integerPassedIn){    
    //Your code here
}

Her şey Object Object devraldığı beri ToString() bir yöntem var nasıl ToString() yerli yöntemini kullanmadan string int bir dönüştürmek istiyorsunuz?

Dize birleştirme sorunu bir vurur ya Object sınıf sayısı kadar zincir ToString() Ara.

Nasıl C bir dize bir tamsayı dönüştürmek musunuz# ToString() kullanmadan?

CEVAP
10 Temmuz 2013, ÇARŞAMBA


Şöyle bir şey:

public string IntToString(int a)
{    
    var chars = new[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
    var str = string.Empty;
    if (a == 0)
    {
        str = chars[0];
    }
    else if (a == int.MinValue)
    {
        str = "-2147483648";
    }
    else
    {
        bool isNegative = (a < 0);
        if (isNegative)
        {
            a = -a;
        }

        while (a > 0)
        {
            str = chars[a % 10]   str;
            a /= 10;
        }

        if (isNegative)
        {
            str = "-"   str;
        }
    }

    return str;
}

Güncelleme:İşte kısa ve sabit uzunlukta bir dizi manipüle diyenler dize birleştirme ortadan kaldırır beri çok daha iyi gerçekleştirmek, gereken başka bir versiyonu. Bazlar 16 ancak yüksek tabanları genişletmek için kolay olacağını savunuyor. Muhtemelen daha gelişmiş olabilir:

public string IntToString(int a, int radix)
{
    var chars = "0123456789ABCDEF".ToCharArray();
    var str = new char[32]; // maximum number of chars in any base
    var i = str.Length;
    bool isNegative = (a < 0);
    if (a <= 0) // handles 0 and int.MinValue special cases
    {
        str[--i] = chars[-(a % radix)];
        a = -(a / radix);
    }

    while (a != 0)
    {
        str[--i] = chars[a % radix];
        a /= radix;
    }

    if (isNegative)
    {
        str[--i] = '-';
    }

    return new string(str, i, str.Length - i);
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ionized Digital Air Studios

    Ionized Digi

    20 HAZİRAN 2009
  • MofoHifi Records

    MofoHifi Rec

    15 HAZİRAN 2006
  • xiaoyu85

    xiaoyu85

    20 ŞUBAT 2010