Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java: How to convert a String of Binary values to a Float and vice-versa?

How do I convert the float value of 12345.12346f to a String of binary values, i.e. "0011010101010101", and vice-versa?

like image 335
okami Avatar asked Mar 01 '11 16:03

okami


3 Answers

I'm not sure it is what you want, but here's a solution to have the binary representation of the IEEE 754 floating-point "double format" bit layout for a float (it is basically the memory representation of a float) :

int intBits = Float.floatToIntBits(yourFloat); 
String binary = Integer.toBinaryString(intBits);

For the reverse procedure :

int intBits = Integer.parseInt(myString, 2);
float myFloat = Float.intBitsToFloat(intBits);
like image 153
krtek Avatar answered Nov 09 '22 18:11

krtek


Working sample:

class F { 
  public static void main( String ... args ) { 
    System.out.println(
          Integer.toBinaryString( 
             Float.floatToIntBits(12345.12346f)
          ) 
     );
  }
}

Output:

1000110010000001110010001111110
like image 20
OscarRyz Avatar answered Nov 09 '22 18:11

OscarRyz


For signed Floats, use Long or BigInteger to parse the string. Casting by int causes the digit at first of 32 bits be intepreted as sign digit. procedure :

int intBits = Float.floatToIntBits(yourFloat); 
String binary = Integer.toBinaryString(intBits);

reverse procedure :

int intBits = new BigInteger(myString, 2).intValue();
// int intBits = (int) Long.parseLong(myString, 2);
float myFloat = Float.intBitsToFloat(intBits);
like image 21
snow Avatar answered Nov 09 '22 19:11

snow