/**
* 十六进制字符串转化成为十进制数字字符串
* @param hexgonSrcStr
* @return
*/
public static String convertHexgon2IntDecimal(String hexgonSrcStr){
if (hexgonSrcStr==null){
return null;
}
if (hexgonSrcStr.isEmpty()){
return null;
}
String trim = hexgonSrcStr.trim();
if (trim==null){
return null;
}
if (trim.isEmpty()){
return null;
}
String substring = hexgonSrcStr.substring(2);
if (!checkIsHexgonStr(substring)){
return null;
}
int totalIntVal=0;
for (int i = 0; i < substring.length(); i++) {
char charAt = substring.charAt(i);
String chartAtStr=charAt+"";
int loopPathTimes=i;
int intValFactor=1;
switch (chartAtStr){
case "A":
intValFactor*=loopPathTimes;
intValFactor*=16;
int bitIntHexgonA=intValFactor*10;
totalIntVal+=bitIntHexgonA;
break;
case "B":
intValFactor*=loopPathTimes;
intValFactor*=16;
int bitIntHexgonB=intValFactor*11;
totalIntVal+=bitIntHexgonB;
break;
case "C":
intValFactor*=loopPathTimes;
intValFactor*=16;
int bitIntHexgonC=intValFactor*12;
totalIntVal+=bitIntHexgonC;
break;
case "D":
intValFactor*=loopPathTimes;
intValFactor*=16;
int bitIntHexgonD=intValFactor*13;
totalIntVal+=bitIntHexgonD;
break;
case "E":
intValFactor*=loopPathTimes;
intValFactor*=16;
int bitIntHexgonE=intValFactor*14;
totalIntVal+=bitIntHexgonE;
break;
case "F":
intValFactor*=loopPathTimes;
intValFactor*=16;
int bitIntHexgonF=intValFactor*15;
totalIntVal+=bitIntHexgonF;
break;
case "0":
intValFactor*=loopPathTimes;
intValFactor*=16;
int bitIntHexgon0=intValFactor*0;
totalIntVal+=bitIntHexgon0;
break;
case "1":
intValFactor*=loopPathTimes;
intValFactor*=16;
int bitIntHexgon1=intValFactor*1;
totalIntVal+=bitIntHexgon1;
break;
case "2":
intValFactor*=loopPathTimes;
intValFactor*=16;
int bitIntHexgon2=intValFactor*2;
totalIntVal+=bitIntHexgon2;
break;
case "3":
intValFactor*=loopPathTimes;
intValFactor*=16;
int bitIntHexgon3=intValFactor*3;
totalIntVal+=bitIntHexgon3;
break;
case "4":
intValFactor*=loopPathTimes;
intValFactor*=16;
int bitIntHexgon4=intValFactor*4;
totalIntVal+=bitIntHexgon4;
break;
case "5":
intValFactor*=loopPathTimes;
intValFactor*=16;
int bitIntHexgon5=intValFactor*5;
totalIntVal+=bitIntHexgon5;
break;
case "6":
intValFactor*=loopPathTimes;
intValFactor*=16;
int bitIntHexgon6=intValFactor*6;
totalIntVal+=bitIntHexgon6;
break;
case "7":
intValFactor*=loopPathTimes;
intValFactor*=16;
int bitIntHexgon7=intValFactor*7;
totalIntVal+=bitIntHexgon7;
break;
case "8":
intValFactor*=loopPathTimes;
intValFactor*=16;
int bitIntHexgon8=intValFactor*8;
totalIntVal+=bitIntHexgon8;
break;
case "9":
intValFactor*=loopPathTimes;
intValFactor*=16;
int bitIntHexgon9=intValFactor*9;
totalIntVal+=bitIntHexgon9;
break;
}
}
return String.valueOf(totalIntVal);
}
/**
* 判断是否是十六进制字符串数字
* @param hexgonStr
* @return
*/
public static Boolean checkIsHexgonStr(String hexgonStr){
if (hexgonStr==null){
return null;
}
if (hexgonStr.isEmpty()){
return null;
}
String trim = hexgonStr.trim();
if (trim==null){
return null;
}
if (trim.isEmpty()){
return null;
}
String testRuleStr = new String("ABCDEF0123456789");
for (int i = 0; i < hexgonStr.length(); i++) {
Character charAt = hexgonStr.charAt(i);
boolean contains = testRuleStr.contains(charAt + "");
if (!contains){
return false;
}
}
return true;
}