C#相当于Java的Float.floatToIntBits

Hob*_*ist 2 c# java types

我一直在用Java编写一个网络库的端口,这是我还没有解密和继续前进的最后一行代码.代码行如下:

Float.floatToIntBits(Float);
Run Code Online (Sandbox Code Playgroud)

返回一个整数.

Java 中floatToIntBits的代码

public static int floatToIntBits(float value) {
        int result = floatToRawIntBits(value);
        // Check for NaN based on values of bit fields, maximum
        // exponent and nonzero significand.
        if ( ((result & FloatConsts.EXP_BIT_MASK) ==
              FloatConsts.EXP_BIT_MASK) &&
             (result & FloatConsts.SIGNIF_BIT_MASK) != 0)
            result = 0x7fc00000;
        return result;
    }
Run Code Online (Sandbox Code Playgroud)

我对内存和十六进制值的经验已经不足以将其移植到我自己身上了,更不用说那些让我疯狂的地方的位移.

Dmi*_*try 5

看看BitConverter课程.对于双打,它有方法DoubleToInt64BitsInt64BitsToDouble.对于花车你可以这样做:

float f = ...;
int i = BitConverter.ToInt32(BitConverter.GetBytes(f), 0);
Run Code Online (Sandbox Code Playgroud)

或者改变字节顺序:

byte[] bytes = BitConverter.GetBytes(f);
Array.Reverse(bytes);
int i = BitConverter.ToInt32(bytes, 0);
Run Code Online (Sandbox Code Playgroud)