Преобразование из одной позиции шкалы обозначений в другую - PullRequest
0 голосов
/ 24 августа 2010

Как я могу преобразовать одну шкалу нотации в другую, используя свою пользовательскую функцию с помощью C #.

abstract string Convert(string value, string fromBase, string toBase);

значение - строковая шкала представления нотации в базовой нотации

fromBase - строка представляет базу числового значения

toBase - строка представляет базу числового значения, которое необходимо преобразовать

Строка PS , представляющая базовую шкалу обозначений, может включать любые символы для обозначения возрастающего порядка цифр

Например,

Значение = «GSAK»

   fromBase = “A,S,G,K” – four(4) is the base scale of notation (If write arabic figures:  0,1,2,3)
   toBase= “0,1,2,3,4,5,6,7,8,9” – ten(10) is the base scale of notation
   return value = “147”

1 Ответ

0 голосов
/ 24 августа 2010

Я бы сначала перевел входное значение в один из числовых типов данных (то есть long), а затем закодировал бы в целевой формат. Проект реализации класса для анализа и кодирования (не проверено и, конечно, не оптимально):

public class Formatter
{
  List<char> symbols;
  int base;

  public Formatter(string format)
  {
    string[] splitted = format.Split(",");
    symbols = splitted.Select(x => x[0]).ToList();
    base = symbols.Size;
  }

  public long Parse(string value)
  {
    long result = 0;
    foreach(char c in value)
    {
      long n = symbols.IndexOf(c);
      result = result*base+n;
    }
    return result;
  }

  public string Encode(long value)
  {
    StringBuilder sb = new StringBuilder();
    while(value>0)
    {
      long n = value % base;
      value /= base;
      sb.Insert(0, symbols[n]);
    }
    return sb.ToString();
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...