• 短网址计算


            string chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

            
    private void button1_Click(object sender, EventArgs e)
            {
                
    int i = int.Parse(textBox1.Text);
                textBox2.Text 
    = EncodeNum(i);
                textBox3.Text 
    = DecodeNum(textBox2.Text).ToString();
            }

            
    /// <summary>
            
    /// 转码
            
    /// </summary>
            
    /// <param name="integer"></param>
            
    /// <returns></returns>
            private string EncodeNum(int integer)
            {
                
    double number = integer;
                
    int hex = chars.Length;
                StringBuilder sb 
    = new StringBuilder();
                
    do
                {
                    
    //计算指数
                    int exp = -1;
                    
    double value = 0;
                    
    while (value < number)
                    {
                        exp
    ++;
                        value 
    = Math.Pow(hex, exp + 1);
                    }
                    
    //计算对应字符
                    double num = number / Math.Pow(hex, exp);
                    
    int index = Convert.ToInt32(Math.Floor(num));
                    sb.Append(chars.Substring(index, 
    1));
                    number 
    = number % Math.Pow(hex, exp);
                } 
    while (number > 0);


                
    return sb.ToString();
            }

            
    /// <summary>
            
    /// 解码
            
    /// </summary>
            
    /// <param name="s"></param>
            
    /// <returns></returns>
            private int DecodeNum(string s)
            {
                
    double x = 0;
                
    int hex = chars.Length;
                
    for (int i = 0; i < s.Length; i++)
                {
                    
    int exp = s.Length - 1 - i;
                    
    int num = chars.IndexOf(s.Substring(i, 1));
                    x 
    += num * Math.Pow(hex, exp);
                }

                
    return Convert.ToInt32(x);
            }
  • 相关阅读:
    Java面向对象_继承——基本概念以及管理化妆品实例分析
    Java面向对象_单例设计模式
    Java面向对象_增强for可变参数与代码块
    Java面向对象_对象一一对应关系和this关键字
    Java面向对象_对象数组
    Java面向对象_对象内存分析—值传递和引用传递
    Leetcode 203. 移除链表元素
    Leetcode 160. 相交链表
    Leetcode 141. 环形链表
    Leetcode 82. 删除排序链表中的重复元素 II
  • 原文地址:https://www.cnblogs.com/gateluck/p/1999546.html
Copyright © 2020-2023  润新知