求 java 的 Float 下面的一个方法 C# 的算法
求这两个算法
Float.floatToRawIntBits(paramFloat)
Double.doubleToRawLongBits(paramDouble)
这个是反的,
private float intBitsToFloat(int bits)
{
int s = ((bits >> 31) == 0) ? 1 : -1;
int e = ((bits >> 23) & 0xff);
int m = (e == 0) ?
(bits & 0x7fffff) << 1 :
(bits & 0x7fffff) | 0x800000;
return (float)(s * m * Math.Pow(2, e - 150));
}
private double longBitsToDouble(long bits)
{
int s = ((bits >> 63) == 0) ? 1 : -1;
int e = (int)((bits >> 52) & 0x7ffL);
long m = (e == 0) ?
(bits & 0xfffffffffffffL) << 1 :
(bits & 0xfffffffffffffL) | 0x10000000000000L;
return (s * m * Math.Pow(2, e - 1075));
}
------解决方案--------------------