16进制字符串不可以直接用Integer.parseInt()转换,字符串“00”和“FF”还好,但是若为“1A”,这样转换必然出错!
附16进制转10进制:
// 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 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;
}