
Сирожа
28.10.2016
13:24:58
делал уже...сейчас по репам пошерстю
public static class IdConvert
{
private static string codeMap = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
private static Dictionary<string, int> codeDeMap = new Dictionary<string, int>
{
{"0", 0}, {"1", 1}, {"2", 2}, {"3", 3}, {"4", 4}, {"5", 5}, {"6", 6}, {"7", 7}, {"8", 8},
{"9", 9}, {"a", 10}, {"b", 11}, {"c", 12}, {"d", 13}, {"e", 14}, {"f", 15}, {"g", 16}, {"h", 17},
{"i", 18}, {"j", 19}, {"k", 20}, {"l", 21}, {"m", 22}, {"n", 23}, {"o", 24}, {"p", 25}, {"q", 26},
{"r", 27}, {"s", 28}, {"t", 29}, {"u", 30}, {"v", 31}, {"w", 32}, {"x", 33}, {"y", 34}, {"z", 35},
{"A", 36}, {"B", 37}, {"C", 38}, {"D", 39}, {"E", 40}, {"F", 41}, {"G", 42}, {"H", 43}, {"I", 44},
{"J", 45}, {"K", 46}, {"L", 47}, {"M", 48}, {"N", 49}, {"O", 50}, {"P", 51}, {"Q", 52}, {"R", 53},
{"S", 54}, {"T", 55}, {"U", 56}, {"V", 57}, {"W", 58}, {"X", 59}, {"Y", 60}, {"Z", 61}
};
public static string EncodeId(Int64 id)
{
if (id <= 0) return string.Empty;
string encodeString = "";
do
{
Int64 dig = id % 62;
encodeString += codeMap[(int)dig];
id = (Int64)((decimal)id / 62);
} while (id != 0);
return encodeString;}
public static Int64 DecodeId(string encodedId)
{
Int64 id = 0;
for (int i = 0; i < encodedId.Length; i++)
{
id += codeDeMap[encodedId.Substring(encodedId.Length - 1 - i, 1)] * (Int64)Math.Pow(62, encodedId.Length - i - 1);
}
return id;
}
}