Класс, определяющий базовый номер 3 в .net Framework ( .net 4.0)

#c#

#c#

Вопрос:

Я ищу какой-нибудь класс, который я могу использовать для определения числа, равного 3 базовым (троичное число)

Есть ли что-нибудь, что я могу использовать в .net Framework, или мне нужно что-то написать?

Спасибо за любую помощь.

Комментарии:

1. Вы пытаетесь преобразовать числа между базовыми?

2. Вы говорите о целых или дробных числах? Если вы говорите о целых числах: почему вы хотите представить число как base3 внутренне вместо использования обычных целых чисел и использовать синтаксический анализ по основанию 3 / toString?

3. Нет, мне нужно определить некоторую таблицу, в которой каждое из значений таблицы может быть одним из {0, 1, 2}, и мне нужно создать все значения, которые может выдать таблица (столбец 7 в таблице)

4. Как я могу использовать int в качестве синтаксического анализа базового 3 / toString?

5. @Yanshof: вы можете разобрать / toString из / в целое число, например, с помощью этой библиотеки: codeproject.com/KB/macros/Convert.aspx

Ответ №1:

Вы можете проанализировать с помощью Convert.ToInt32(s,base) и преобразовать в строку с помощью Convert.ToString(i,base)

Или, если ваш ввод состоит из целых чисел, вы можете использовать что-то вроде этого:

 int CombineBase3(params int[] digits)
{
    int result=0;
    int multiplier;
    Debug.Assert(digits.Length<=20);//Floor(32*log(2)/log(3))
    for(int i=0;i<digits.Length;i  )
    {
      Debug.Assert(digits[i]>=0 amp;amp; digits[i]<3);
      result =multiplier*digits;
      multiplier*=3;
    }
    return resu<
}
  

Или вы можете быть ленивым и просто использовать byte[] и сохранить цифры в элементах массива и забыть обо всех элементах целочисленной кодировки.

Комментарии:

1. Спасибо, не знал этого. Какое странное ограничение.

2. Это имеет смысл, база 10, по понятным причинам, является нечетной. Я удивлен, что они не поддерживали базовый 64

3. @Matt Кодировка Base64 полностью отличается от кодирования целых чисел в base 64. В базах > 36 заканчиваются буквы, поэтому я понимаю, что они не поддерживают более крупные. Но реализовать алгоритм, который поддерживает все базовые числа от 2 до 26, не сложно. Вы можете использовать общие базы для повышения производительности, но я думаю, что они должны были реализовать все базы.

4. Похоже, вы гораздо лучше разбираетесь в этих вещах, чем я, поэтому я просто кивну и соглашусь. 1 🙂