I have this for example:
0 10000101 00111100000000000000000
and want to convert this to decimal number.
So far, I already have the code to get the exponent part:
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);
Is there any in-built command in Java?
Yes, there is a built-in command, intBitsToFloat converts a 32-bit int to a float. You only have to parse your input as an int, the easier way - if your input is in hexadecimal format - would be to directly use base 16 in Integer.parseInt(), then intBitsToFloat converts that bit pattern to a float.
The Integer.ParseInteger(str, radix) will convert a binary digit string to an int ... if you use two as the radix.
However, Daniels answer gives you a better approach that avoids the need for any intermediate string representation of the number.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With