C#進制那點事兒

程序員幹了兩年了,前兩天跟朋友聊天,他說去金山面試,面試官問他2的32次方是多少?16次方?竟然答不上來,我想了想,自己也答不上來,這程序員當的不合格啊。正好自己寫了一個小爬蟲,想遍歷所有url參數(有點low),參數不帶特殊字符只有數字和字母,所以想藉此機會搞個62進製出來,先介紹基礎進制

二,八,十,十六進制

直接轉換

參考鏈接:https://www.cnblogs.com/hitfredrick/p/6403003.html
####十六進制轉換爲二進制(int–>string)

例:System.Convert.ToString(i, 2);// i爲int類型 以0X14爲例,輸出爲10100

間接轉換

其他進制轉十進制

十進制是人類使用的基礎,最容易理解的類型了,其他進制間轉換也可以先轉十進制然後在轉爲目標進制
利用System.Convert.ToInt32(s, n);可以將其他進制轉換爲十進制
例如二進制轉十進制:
System.Convert.ToInt32(s, 2);// d爲string類型 以“1010”爲例,輸出爲10
十六進制轉十進制
System.Convert.ToInt32(“0x41”, 16);//以"0x41"爲例,輸出爲65

十進制轉其他進制

使用int的toString()函數,在括號中不同的參數可以對應轉不同進制

轉二進制

System.Convert.ToString(d, 2);// d爲int類型 以4爲例,輸出爲100

轉十六進制

123456789.ToString(“X”)
或者
System.Convert.ToString(i, 16);

其他進制

十進制轉其他進制

參考了一點大神的代碼:http://www.cnblogs.com/edisonchou/p/4620027.html
然後使用的C#自帶棧

        /// <summary>
        /// 十進制轉其他進制
        /// 只支持16進制及以下
        /// </summary>
        /// <param name="num">十進制數</param>
        /// <param name="dec">要轉的進制</param>
        /// <returns></returns>
        public string ConvertNum(int num, int dec)
        {
            if (dec < 2 || dec > 16)
            {
                throw new ArgumentOutOfRangeException("dec", "只支持將十進制數轉換爲二進制到十六進制數");
            }

            Stack<char> stack = new Stack<char>();
            int residue;
            // 餘數入棧
            while (num != 0)
            {
                residue = num % dec;
                if (residue >= 10)
                {
                    // 如果是轉換爲16進制且餘數大於10則需要轉換爲ABCDEF
                    residue = residue + 55;
                }
                else
                {
                    // 轉換爲ASCII碼中的數字型字符1~9
                    residue = residue + 48;
                }
                stack.Push((char)residue);
                num = num / dec;
            }
            // 反序出棧
            string result = string.Empty;
            while (stack.LongCount() > 0)
            {
                result += stack.Pop();
            }

            return result;
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章