Java中十六进制数(正负)的转换为十进制

1.二进制转化为十进制

二进制数一般转化为十进制数都是直接调用
Integer.parseInt(hexadecimalStr, 2);
Long.parseInt(hexadecimalStr, 16);
直接使用这个方法,就能将数据转化为对应的十进制数,
但是这个一般只能适用正数

2.负数二进制、十六进制转化为十进制

一把二进制数八位表示,bit8位代表符号 0正 1负 ;
十六进制也是可以使用八位表示例如FFFFFFFF可以表示 -1
在实际的使用中 十六进制的数据可能表示负数;
这个十六进制可能只有两位,我们需要判断是不是负数,
例:一个两位的十六进制的数据可能表示负数;
FF 此时表示的就是-1
没有说明这个两位的十六进制的数时;
FF表示的就是 255

最近就接触一个串口通信电压是4位的十六进制的表示可能是负数,
public static int hexadecimal16Conversion(String hexadecimalStr) {
int getDataDecimal = 0;//转化得到的目标数据
//16进制代表数据 4位数字
if (hexadecimalStr.length() == 4) {
int bit1Num = Integer.parseInt(hexadecimalStr.substring(0, 1), 16);//获取第一位。判断是正数还是负数
if (bit1Num < 8) { //小于8是正数
getDataDecimal = Integer.parseInt(hexadecimalStr, 16);
} else { //负数
hexadecimalStr = “FFFF” + hexadecimalStr; //先不全八位
getDataDecimal = new BigInteger(hexadecimalStr, 16).intValue();
}
return getDataDecimal;
}
return 0;
}

如程序 如果这个4位的数据可能表示负数 我们就获取最高位 判断是否大于7 ;大于7说明此时数表示的是负数;

其他的情况都是一样

十进制转化为二进制 ,十六精致

1.String result = Integer.toBinaryString(n);
直接使用方法调用转化
2.使用位运算
public void binaryToDecimal(int n){
for(int i = 31;i >= 0; i–)
System.out.print(n >>> i & 1);
}
3.十进制转化为16进制的方
Integer.toHexString(200);

猜你喜欢

转载自blog.csdn.net/rainAndyou/article/details/106689239