java十进制转十六进制

public class ToHex {
    //10进制转16进制  
    public static String IntToHex(int n){  
        char[] ch = new char[20];  
        int nIndex = 0;  
        while ( true ){  
            int m = n/16;  
            int k = n%16;  
            if ( k == 15 )  
                ch[nIndex] = 'F';  
            else if ( k == 14 )  
                ch[nIndex] = 'E';  
            else if ( k == 13 )  
                ch[nIndex] = 'D';  
            else if ( k == 12 )  
                ch[nIndex] = 'C';  
            else if ( k == 11 )  
                ch[nIndex] = 'B';  
            else if ( k == 10 )  
                ch[nIndex] = 'A';  
            else   
                ch[nIndex] = (char)('0' + k);  
            nIndex++;  
            if ( m == 0 )  
                break;  
            n = m;  
        }  
        StringBuffer sb = new StringBuffer();  
        sb.append(ch, 0, nIndex);  
        sb.reverse();  
        String strHex = new String("001A");  
        strHex += sb.toString();  
        return strHex;  
    }  
      
    //16进制转10进制  
    public static int HexToInt(String strHex){  
        int nResult = 0;  
        if ( !IsHex(strHex) )  
            return nResult;  
        String str = strHex.toUpperCase();  
        if ( str.length() > 2 ){  
            if ( str.charAt(0) == '0' && str.charAt(1) == 'X' ){  
                str = str.substring(2);  
            }  
        }  
        int nLen = str.length();  
        for ( int i=0; i<nLen; ++i ){  
            char ch = str.charAt(nLen-i-1);  
            try {  
                nResult += (GetHex(ch)*GetPower(16, i));  
            } catch (Exception e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
        }  
        return nResult;  
    }  
      
    //计算16进制对应的数值  
    public static int GetHex(char ch) throws Exception{  
        if ( ch>='0' && ch<='9' )  
            return (int)(ch-'0');  
        if ( ch>='a' && ch<='f' )  
            return (int)(ch-'a'+10);  
        if ( ch>='A' && ch<='F' )  
            return (int)(ch-'A'+10);  
        throw new Exception("error param");  
    }  
      
    //计算幂  
    public static int GetPower(int nValue, int nCount) throws Exception{  
        if ( nCount <0 )  
            throw new Exception("nCount can't small than 1!");  
        if ( nCount == 0 )  
            return 1;  
        int nSum = 1;  
        for ( int i=0; i<nCount; ++i ){  
            nSum = nSum*nValue;  
        }  
        return nSum;  
    }  
    //判断是否是16进制数  
public static boolean IsHex(String strHex){  
int i = 0;  
if ( strHex.length() > 2 ){  
if ( strHex.charAt(0) == '0' && (strHex.charAt(1) == 'X' || strHex.charAt(1) == 'x') ){  
i = 2;  
}  
}  
for ( ; i<strHex.length(); ++i ){  
char ch = strHex.charAt(i);  
if ( (ch>='0' && ch<='9') || (ch>='A' && ch<='F') || (ch>='a' && ch<='f') )  
continue;  
return false;  
}  
return true;  
}  

public static void main(String []args){
//int num = HexToInt("242395B2");
for(int i=0,y=1;i<3000; i=i+2,y++){
System.out.println(IntToHex(606311858+i));
}

//System.out.println(num);
}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值