none
Taban Cevirme RRS feed

  • Soru

  • Merhabalar, taban çevirmek için bir Form.Application yazmaya çalışıyorum fakat 2'den farklı tabanlarda çevirme işlemi yapamıyorum. Debugta hatayı çözdüm gibi ama nasıl bir yol izleyeceğime karar veremedim.

       private void btn_cevir_Click(object sender, EventArgs e)
            {
                if(tb_onluk.Text!="" && tb_taban.Text != "") { 
                onluk = Convert.ToInt32(tb_onluk.Text);
                taban = Convert.ToInt32(tb_taban.Text);
                }
    
    
    
                sonuc += (onluk % taban).ToString();
    
                bolum = onluk / taban;
                do {
                    sonuc += (bolum % taban).ToString();
    
                    bolum = bolum / taban;
    
                } while (bolum>=taban || bolum==1);
    
    
    
                char[] tson = new char[sonuc.Length];
    
                for(int i = 0; i< sonuc.Length;i++)
                {
                  
                    tson[i] = sonuc[sonuc.Length - i - 1];
                    lbl_sonuc.Text += tson[i];
                }
    
                
            }



    • Düzenleyen HasanEkşi 15 Ekim 2016 Cumartesi 09:11
    15 Ekim 2016 Cumartesi 09:11

Yanıtlar

  • public string ToBase(string value, int from, int to)
            {
                string[] hex = new string[] { "A", "B", "C", "D", "E", "F" };
                List<string> a = new List<string>();
                int val = 0;
                try
                {
                    val = Convert.ToInt32(value, from);
                }
                catch { val = 0; }
    
                while (val >= to)
                {
                    int result = (val % to);
                    val = val / to;
                    string b = result > 9 ? hex[result - 10] : result.ToString();
                    a.Add(b); 
                }
                a.Add(val > 9 ? hex[val - 10] : val.ToString());
                a.Reverse();
                string r = string.Join("", a);
                return r;
            }

    Kullanımı 

     Console.WriteLine(ToBase("1227", 8, 16));
     Console.WriteLine(ToBase("10011", 2, 10));
     Console.WriteLine(ToBase("1227", 16, 8));
     Console.WriteLine(ToBase("65535", 10, 16));


    • Yanıt Olarak İşaretleyen HasanEkşi 20 Ekim 2016 Perşembe 11:16
    16 Ekim 2016 Pazar 07:45

Tüm Yanıtlar

  • Format kullanarak yapabilirsin. veya 

    var a = Convert.ToInt32("1254", 16);
    gibi. 1254 sayısını 16'lık taban kabul eder ve 10 luk tabana çevirir.

    15 Ekim 2016 Cumartesi 09:15
  • Hocam amacım kolay yoldan yapmak yerine algoritma kurma yeteneğimi geliştirmek ondan böyle bir yol izlemeye çalışıyorum. Yinede desteğiniz için sağolun :)
    16 Ekim 2016 Pazar 01:22
  • public string ToBase(string value, int from, int to)
            {
                string[] hex = new string[] { "A", "B", "C", "D", "E", "F" };
                List<string> a = new List<string>();
                int val = 0;
                try
                {
                    val = Convert.ToInt32(value, from);
                }
                catch { val = 0; }
    
                while (val >= to)
                {
                    int result = (val % to);
                    val = val / to;
                    string b = result > 9 ? hex[result - 10] : result.ToString();
                    a.Add(b); 
                }
                a.Add(val > 9 ? hex[val - 10] : val.ToString());
                a.Reverse();
                string r = string.Join("", a);
                return r;
            }

    Kullanımı 

     Console.WriteLine(ToBase("1227", 8, 16));
     Console.WriteLine(ToBase("10011", 2, 10));
     Console.WriteLine(ToBase("1227", 16, 8));
     Console.WriteLine(ToBase("65535", 10, 16));


    • Yanıt Olarak İşaretleyen HasanEkşi 20 Ekim 2016 Perşembe 11:16
    16 Ekim 2016 Pazar 07:45