十进制转其他进制,含快速算法

//十进制转二制  
        public string DtoB(int d)  
        {  
            string b = “”;  
            //判断该数如果小于2,则直接输出  
            if (d < 2)  
            {  
                b = d.ToString();  
            }  
            else 
            {  
                int c;  
                int s = 0;  
                int n = d;  
                while (n >= 2)  
                {  
                    s++;  
                    n = n / 2;  
                }  
                int[] m = new int[s];  
                int i = 0;  
                do 
                {  
                    c = d / 2;  
                    m[i++] = d % 2;  
                    d = c;  
                } while (c >= 2);  
                b = d.ToString();  
                for (int j = m.Length – 1; j >=0; j–)  
                {  
                    b += m[j].ToString ();  
                }  
            }  
            return b;  
        }  
 
 
        //十进制转八进制  
        public string DtoO(int d)  
        {  
            string o = “”;  
            if (d < 8)  
            {  
                o = d.ToString();  
            }  
            else 
            {  
                int c;  
                  
                int s=0;  
                int n=d;  
                int temp = d;  
                while (n >= 8)  
                {  
                    s++;  
                    n = n / 8;  
                }  
                int[] m = new int[s];  
                int i = 0;  
                do 
                {  
                    c = d / 8;  
                    m[i++] = d % 8;  
                    d = c;  
                } while (c >= 8);  
                o = d.ToString();  
                for (int j = m.Length – 1; j >= 0; j–)  
                {  
                    o += m[j];  
                }  
            }  
            return o;  
        }  
 
 
        //十进制转十六进制  
        public string DtoX(int d)  
        {  
            string x = “”;  
            if (d < 16)  
            {  
                x = chang(d);  
            }  
            else 
            {  
                int c;  
                int s = 0;  
                int n = d;  
                int temp = d;  
                while (n >= 16)  
                {  
                    s++;  
                    n = n / 16;  
                }  
                string [] m = new string[s];  
                int i = 0;  
                do 
                {  
                    c = d / 16;  
                    m[i++] = chang(d % 16);//判断是否大于10,如果大于10,则转换为A~F的格式  
                    d = c;  
                } while (c >= 16);  
                x = chang(d);  
                for (int j = m.Length – 1; j >= 0; j–)  
                {  
                    x += m[j];  
                }  
            }  
            return x;  
        }  
 
 
        //判断是否为10~15之间的数,如果是则进行转换  
        public string chang(int d)  
        {  
            string x = “”;  
            switch (d)  
            {  
                case 10:  
                    x = “A”;  
                    break;  
                case 11:  
                    x = “B”;  
                    break;  
                case 12:  
                    x = “C”;  
                    break;  
                case 13:  
                    x = “D”;  
                    break;  
                case 14:  
                    x = “E”;  
                    break;  
                case 15:  
                    x = “F”;  
                    break;  
                default:  
                    x = d.ToString();  
                    break;  
            }  
            return x;  
        }  

还有一种办法,效率更加高,那就是移位操作,给出10进制转16进制的一个算法

public static String dec2Hex(int dec) { StringBuffer sb =new StringBuffer(); sb.append(“0x”); for (int i =0; i <8; i++) { int tmp = (dec >> (7- i %8) *4) &0x0f; if (tmp <10) sb.append(tmp); else sb.append((char) (‘A’+ (tmp -10))); } return sb.toString(); }

    原文作者:进制转换
    原文地址: https://blog.csdn.net/bravekingzhang/article/details/6444840
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞