在一次业务需求中需要获取到一个十六进制字符的负数。下面贴出代码:
/**
* 负数的16进制字符串转换为负的String值[实际数据].
*
**/
public static String getMinus(String value){
// 由于我的需求是十六进制转换,所以这里的字符串是16进制的.例:FC39EC
// Integer.valueOf(value, 16) 根据16进制字符串获取十进制的值.
// 然后获取到这个值的二进制的字符串.
// 如果想获取十进制的原码,直接调用toBinaryString即可.
String binaryString = Integer.toBinaryString(Integer.valueOf(value, 16));
// 下面是分隔然后取反[反码]
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) 将二进制转为十进制.
Integer integer = Integer.valueOf(builder.toString(),2);
// 补码需要+1所以直接在int的基础上加1就好了.
integer +=1;
// 下面的是转换,能用,但是处理的不太好,没去做改动了
return Double.valueOf(-integer).toString();
}
觉得Integer自己带的工具类特别好用,所以记录一下。
Integer.valueOf(xx,xx);// 第一个参数是数值,第二个参数是由多少进制转为十进制。