I'd write this myself.
First convert from float to integer, by computing both exponents using Math.getExponent
and taking the maximum of these. Then you can scale the numbers such that the larger of these numbers has 32 bits before the decimal point. Then round (or truncate) the results to int. Then you'll have to combine those two integers into a single long using bit-interleaving, and finally you can scale the result again using the stored exponent.
If your input already is restricted to e.g. the [0,1] range, you can simply use fixed-point arithmetic based on integers instead of this manual rescaling.
To do the bit interleaving, I'd use a lookup map which e.g. takes a block of 8 bits and computes the corresponding 16 bit interleaved block. That way you won't have to do too many bit shift operations.