- CSharp - TwitCodes
- http://ya.topbot.ru/post/Wave-...- http://blogs.yandex.ru/search....- http://flashr.ya.ru/replies.xm...- http://www.clg-espinasse-gelle...- http://www.liveinternet.ru/sho...
Please wait, it may take some time...
Copy Source | Copy HTMLusing System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; /// <summary> /// Класс для кодирования номера в ссылку для твитера. /// у нас 2 в 6 комбинаций, в то время как в хексе 2 в 4й. /// поэтому нужно разбить все число на группы по 2 в 12й и конвертить... - 3символа в хексе = 2в нашей системе /// </summary> public class TwitCodes { /// <summary> /// база преобразования /// </summary> private const int ibase = 6; public int iCode; public string tCode; public TwitCodes(int code) { this.iCode = code; tCode = ""; //пройдемся по всему числу... do { tCode = GetCharByCode(code % 64) + tCode; code >>= ibase; } while (code > 0); } public TwitCodes(string code) { this.tCode = code; iCode = 0; char[] chars = code.ToCharArray(); //пройдемся по всему числу... for (int i = chars.Length - 1, mult = 1; i >= 0; i--, mult *= 64) { iCode += this.GetCodeByChar(chars[i]) * mult; } } private char GetCharByCode(int number) { if (number < 10) { return number.ToString()[0]; } else if (number < 36) { return (char)((int)'a' + number - 10); } else if (number < 62) { return (char)((int)'A' + number - 36); } else if (number == 62) { return '_'; } else if (number == 63) { return '-'; } else { System.Diagnostics.Debug.WriteLine("GetCharByCode: Неправильный номер = " + number.ToString()); return ' '; } } private int GetCodeByChar(char ch) { if (Char.IsNumber(ch)) { return (int)Char.GetNumericValue(ch); } else if (Char.Equals(ch, '_')) { return 62; } else if (Char.Equals(ch, '-')) { return 63; } else if (Char.IsLower(ch)) { return (int)ch + 10 - (int)'a'; } else if (Char.IsUpper(ch)) { return (int)ch + 36 - (int)'A'; } else { System.Diagnostics.Debug.WriteLine("GetCodeByChar: Неправильный символ = " + ch); return ' '; } } }