36 система счисления
От: Аноним  
Дата: 14.07.11 13:48
Оценка:
Доброе время суток !
Что то к вечеру лыжи не едут.

Надо перевести 10 число в 36 и обратно

int ch = 66;  
string res =   Convert.ToString(ch, 36);

Ошибка недопустимое основание ??? что не правильно??

Спасибо!
Re: 36 система счисления
От: Lloyd Россия  
Дата: 14.07.11 13:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Надо перевести 10 число в 36 и обратно


А>
А>int ch = 66;  
А>string res =   Convert.ToString(ch, 36);
А>

А>Ошибка недопустимое основание ??? что не правильно??

The base of the return value, which must be 2, 8, 10, or 16.

Re[2]: 36 система счисления
От: Аноним  
Дата: 14.07.11 13:58
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, Аноним, Вы писали:


А>>Надо перевести 10 число в 36 и обратно


А>>
А>>int ch = 66;  
А>>string res =   Convert.ToString(ch, 36);
А>>

А>>Ошибка недопустимое основание ??? что не правильно??

L>

L>The base of the return value, which must be 2, 8, 10, or 16.


точно .
Короче напильник в руки или есть что то готовое ?
Re[3]: 36 система счисления
От: Lloyd Россия  
Дата: 14.07.11 14:00
Оценка: +1 :)
Здравствуйте, Аноним, Вы писали:

А>>>Надо перевести 10 число в 36 и обратно


L>>

L>>The base of the return value, which must be 2, 8, 10, or 16.


А>точно .

А>Короче напильник в руки или есть что то готовое ?

для начала — понять, что этот код даже если бы и работал, то не помог бы в задаче "перевести 10 число в 36".
Re: 36 система счисления
От: Kalina9001  
Дата: 14.07.11 14:03
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Доброе время суток !

А>Что то к вечеру лыжи не едут.

А>Надо перевести 10 число в 36 и обратно


А>
А>int ch = 66;  
А>string res =   Convert.ToString(ch, 36);
А>

А>Ошибка недопустимое основание ??? что не правильно??

Console.WriteLine(res);
А что должно получиться?
... << RSDN@Home 1.2.0 alpha 5 rev. 1497>>
Re: 36 система счисления
От: Oksana Gimmel http://oksana-gimmel.blogspot.com/
Дата: 14.07.11 15:24
Оценка: 18 (2) :))
Здравствуйте, Аноним, Вы писали:

А>Надо перевести 10 число в 36 и обратно


На правах шутки

using System;
using System.Windows.Forms;

class Program
{
    [STAThread]
    static void Main()
    {
        var base36 = Convert(10000, 36);

        Console.WriteLine(base36);
        Console.WriteLine(Convert(base36, 10, 36));
    }

    static string Convert(int number, int toBase)
    {
        return Convert(number.ToString(), toBase);
    }

    static string Convert(string number, int toBase, int fromBase = 10)
    {
        using(var browser = new WebBrowser())
        {
            browser.Navigate(string.Empty);
            browser.Document.InvokeScript(
                "execScript",
                new[] { "function convert(number, toBase, fromBase) { return parseInt(number, fromBase).toString(toBase); }" });
            
            return (string) browser.Document.InvokeScript("convert", new object[] { number, toBase, fromBase });
        }
    }
}
asato ma sad gamaya
Re: 36 система счисления
От: Аноним  
Дата: 15.07.11 08:43
Оценка:
Здравствуйте, Аноним, Вы писали:

Наверное кому-нибудь пригодится
Итог представления числа в другой системе счисления выглядит так

 public class BaseConverter { 

    public static string ToBase(string number, int start_base, int target_base) { 

      int base10 = ToBase10(number, start_base); 
      string rtn = FromBase10(base10, target_base); 
      return rtn; 

    } 
    public static int ToBase10(string number, int start_base) { 

      if (start_base < 2 || start_base > 36) return 0; 
      if (start_base == 10) return Convert.ToInt32(number); 

      char[] chrs = number.ToCharArray(); 
      int m = chrs.Length - 1; 
      int n = start_base; 
      int x; 
      int rtn = 0; 

      foreach(char c in chrs) { 

        if (char.IsNumber(c)) 
          x = int.Parse(c.ToString()); 
        else 
          x = Convert.ToInt32(c) - 55; 

        rtn += x * (Convert.ToInt32(Math.Pow(n, m))); 

        m--; 

      } 

      return rtn; 
     
    } 
    public static string FromBase10(int number, int target_base) { 

      if (target_base < 2 || target_base > 36) return ""; 
      if (target_base == 10) return number.ToString(); 

      int n = target_base; 
      int q = number; 
      int r; 
      string rtn = ""; 

      while (q >= n) { 

        r = q % n; 
        q = q / n; 

        if (r < 10) 
          rtn = r.ToString() + rtn; 
        else 
          rtn = Convert.ToChar(r + 55).ToString() + rtn; 

      } 

      if (q < 10) 
        rtn = q.ToString() + rtn; 
      else 
        rtn = Convert.ToChar(q + 55).ToString() + rtn; 

      return rtn; 
     
    } 

  }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.