从符号的一个位置比例转换到另一个

时间:2010-08-24 13:17:57

标签: c# algorithm

如何使用C#的自定义函数将符号的一个比例转换为另一个符号。

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

value - 基本表示法中符号的字符串表示比例

fromBase - 字符串代表数字

的基础

toBase - 字符串表示您必须转换的数字基础

P.S。 表示符号的基本位置标度的字符串可以包括用于表示数字升序的任何符号

例如

值=“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 :(得分:0)

我首先将输入值转换为其中一种数值数据类型(即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();
  }
}