我有这个例子:
0 10000101 00111100000000000000000
并希望将其转换为十进制数。
到目前为止,我已经有了获得指数部分的代码:
String[]hex={"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
String[]binary={"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"};
String userInput="429E0000";
String result="";
for(int i=0;i<userInput.length();i++)
{
char temp=userInput.charAt(i);
String temp2=""+temp+"";
for(int j=0;j<hex.length;j++)
{
if(temp2.equalsIgnoreCase(hex[j]))
{
result=result+binary[j];
}
}
}
System.out.println(result);
int exponent = Integer.parseInt(result.substring(1,9),2)-127;
System.out.println(exponent);
Java中是否有内置命令?
答案 0 :(得分:9)
是的,有一个内置命令,intBitsToFloat将32位int
转换为float
。您只需将输入解析为int
,更简单的方法 - 如果输入采用十六进制格式 - 将直接使用Integer.parseInt()
中的基数16,然后intBitsToFloat
转换该位模式为float
。
答案 1 :(得分:2)
Integer.ParseInteger(str, radix)
会将二进制数字字符串转换为int
...如果您使用两个作为基数。
然而,Daniels的回答为您提供了一种更好的方法,可以避免使用任何中间字符串表示的数字。