Source Code for Me (s-c.me)

Allows you to paste souce code to blogs! Adapted for Twitter! Here is Search Form in case you missed your code.
Code:
Selected Language:
Show Linenumbers:
Short link for Twitter:
HTML:

HTML view:

Copy Source | Copy HTML
  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Web;
  5. using System.Web.Security;
  6. using System.Web.UI;
  7. using System.Web.UI.WebControls;
  8. using System.Web.UI.WebControls.WebParts;
  9. using System.Web.UI.HtmlControls;
  10.  
  11. /// <summary>
  12. /// Класс для кодирования номера в ссылку для твитера.
  13. /// у нас 2 в 6 комбинаций, в то время как в хексе 2 в 4й.
  14. /// поэтому нужно разбить все число на группы по 2 в 12й и конвертить... - 3символа в хексе = 2в нашей системе
  15. /// </summary>
  16. public class TwitCodes
  17. {
  18.     /// <summary>
  19.     /// база преобразования
  20.     /// </summary>
  21.     private const int ibase = 6;
  22.     public int iCode;
  23.     public string tCode;
  24.  
  25.     public TwitCodes(int code)
  26.     {
  27.         this.iCode = code;
  28.         tCode = "";
  29.         //пройдемся по всему числу...
  30.  
  31.         do
  32.         {
  33.             tCode = GetCharByCode(code % 64) + tCode;
  34.             code >>= ibase;
  35.         } while (code > 0);
  36.     }
  37.  
  38.  
  39.     public TwitCodes(string code)
  40.     {
  41.         this.tCode = code;
  42.         iCode = 0;
  43.         char[] chars = code.ToCharArray();
  44.         //пройдемся по всему числу...
  45.         for (int i = chars.Length - 1, mult = 1; i >= 0; i--, mult *= 64)
  46.         {
  47.             iCode += this.GetCodeByChar(chars[i]) * mult;
  48.         }
  49.     }
  50.  
  51.     private char GetCharByCode(int number)
  52.     {
  53.         if (number < 10)
  54.         {
  55.             return number.ToString()[0];
  56.         }
  57.         else if (number < 36)
  58.         {
  59.             return (char)((int)'a' + number - 10);
  60.         }
  61.         else if (number < 62)
  62.         {
  63.             return (char)((int)'A' + number - 36);
  64.         }
  65.         else if (number == 62)
  66.         {
  67.             return '_';
  68.         }
  69.         else if (number == 63)
  70.         {
  71.             return '-';
  72.         }
  73.         else
  74.         {
  75.             System.Diagnostics.Debug.WriteLine("GetCharByCode: Неправильный номер = " + number.ToString());
  76.             return ' ';
  77.         }
  78.     }
  79.  
  80.     private int GetCodeByChar(char ch)
  81.     {
  82.         if (Char.IsNumber(ch))
  83.         {
  84.             return (int)Char.GetNumericValue(ch);
  85.         }
  86.         else if (Char.Equals(ch, '_'))
  87.         {
  88.             return 62;
  89.         }
  90.         else if (Char.Equals(ch, '-'))
  91.         {
  92.             return 63;
  93.         }
  94.         else if (Char.IsLower(ch))
  95.         {
  96.             return (int)ch + 10 - (int)'a';
  97.         }
  98.         else if (Char.IsUpper(ch))
  99.         {
  100.             return (int)ch + 36 - (int)'A';
  101.         }
  102.         else
  103.         {
  104.             System.Diagnostics.Debug.WriteLine("GetCodeByChar: Неправильный символ = " + ch);
  105.             return ' ';
  106.         }
  107.     }
  108.  
  109. }
  110.  




Based on Manoli.Net's CodeFormatter. Made by Topbot (c) 2008-2012