反64进制的C#代码

来源:互联网 发布:淘宝装修950模板 编辑:程序博客网 时间:2024/06/14 06:15

private void button1_Click(object sender, EventArgs e)//使用 {//by mfkiqpl string ss = "http://t.sina.com.cn/1235919683/5KD0TcOcJsZ";//舒畅的某条微博 richTextBox1.AppendText( sinaWburl2ID(ss) //进行转换后得到真实微博ID是:2211102122143034713 ); } private string sinaWburl2ID(string url) { url = url.Substring(url.LastIndexOf("/") + 1);//取得url地址后的62进制数【5KD0TcOcJsZ】 string[] surl = new string[4]; surl[3] = str62to10(url.Substring(url.Length-4));//倒数第四段,取4位,转10进制 surl[2] = str62to10(url.Substring(url.Length - 7, 3));//倒数第二段,取3位,转10进制 surl[1] = str62to10(url.Substring(url.Length - 8, 1));//倒数第三段,取1位,转10进制 surl[0] = str62to10(url.Substring(0, url.Length - 8));//第一段,取剩下位数,转10进制 if (surl[3].Length < 7) { surl[3] = surl[3].PadLeft(7, '0'); }//倒数第四段10进制数不足7位 左边补0 满足7位 if (surl[2].Length < 6) { surl[2] = surl[2].PadLeft(6, '0'); }//倒数第三段10进制数不足6位 左边补0 满足6位 return surl[0] + surl[1] + surl[2] + surl[3];//合并四段,返回 } private string str62to10(string str62) {//62进制转10进制 Int64 i64=0; for (int i = 0; i < str62.Length; i++) { Int64 Vi = (Int64)Math.Pow(62, (str62.Length - i - 1)); char t = str62[i]; i64 += Vi * str62keys(t.ToString()); } return i64.ToString(); } private Int64 str62keys(string ks)//62进制字典 { string[] keys ={ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }; int i = 0; foreach (string k in keys) { if (ks==k) { return i; } i++; } return 0; }

原创粉丝点击