2012-02-16 59 views
2

我有这样的例子:如何使用Java将32位尾数(IEEE754)转换为十进制数?

,并希望将其转换为十进制数。

到目前为止,我已经有代码来获取指数部分:

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的任何内置的命令?

回答

8

是的,有一个内置命令,intBitsToFloat将32位int转换为float。您只需将输入解析为int,如果您的输入采用十六进制格式,则更简单的方法是直接使用Integer.parseInt()中的基址16,然后intBitsToFloat将该位模式转换为float

2

Integer.ParseInteger(str, radix)会将二进制数字字符串转换为int ...如果您使用两个作为基数。

但是,丹尼尔斯的回答为您提供了一种更好的方法,避免了对数字进行任何中间字符串表示的需要。

相关问题