16进制补码转10进制数
16进制补码转10进制工具类,记下来以后就不重复写了
/**
* 16进制补码转10进制数
* @param str
* @return
*/
public static int complemwnt(String str) {
int result = 0;
String binaryString = Integer.toBinaryString(Integer.valueOf(str, 16));
while(binaryString.length() < 16){
binaryString = "0"+binaryString;
}
String binary = binaryString.substring(0,1);//取第一位判断正负
if ("0".equals(binary)) {
result = Integer.valueOf(binaryString,2);
}else {
String[] split = binaryString.split("");
StringBuilder builder = new StringBuilder();
for (String s : split) {
if("0".equals(s)){
builder.append("1");
}else {
builder.append("0");
}
}
// 调用Integer.valueOf(value, 2) 将二进制转为十进制.
result = Integer.valueOf(builder.toString(),2);
// 先取负数在减1
result = (0 - result) - 1;
}
return result;
}