Casting an Integer to a Single, preserving bit representation

后端 未结 1 929
暗喜
暗喜 2020-12-21 15:27

Is there a fast way in VB.NET to take a 32-bit int and cast to a 32-bit float while preserving the underlying bit structure? BitConverter will do this, but I\'d like to cas

1条回答
  •  南笙
    南笙 (楼主)
    2020-12-21 15:53

    Damn, how could I possibly forget about The C-style Union?

     _
    Public Structure IntFloatUnion
         Public i As Integer
         Public f As Single
    End Structure
    
    
    Sub Main()
        Dim u As IntFloatUnion
    
        u.i = 42
        Console.WriteLine(u.f)
    
        Console.ReadLine()
    End Sub
    

    Well, how about writing a helper function in C# similar to one shown here:

    public static class FancyConverter
    {
        public static unsafe float FloatFromBytes(int i)
        {
            return *((float*)(void*)(&i));
        }
    }
    

    This can be compiled to a separate dll and referenced from the VB project.

    0 讨论(0)
提交回复
热议问题