VB.NET中是否有一种快速的方法可以采用32位int并转换为32位浮点数,同时保留基础位结构? BitConverter会这样做,但我想直接转换它而不涉及字节数组。
答案 0 :(得分:2)
该死的,我怎么可能忘记C风格的联盟?
<Runtime.InteropServices.StructLayout(Runtime.InteropServices.LayoutKind.Explicit)> _
Public Structure IntFloatUnion
<Runtime.InteropServices.FieldOffset(0)> Public i As Integer
<Runtime.InteropServices.FieldOffset(0)> Public f As Single
End Structure
Sub Main()
Dim u As IntFloatUnion
u.i = 42
Console.WriteLine(u.f)
Console.ReadLine()
End Sub
那么,在C#中编写一个类似于here所示的辅助函数:
public static class FancyConverter
{
public static unsafe float FloatFromBytes(int i)
{
return *((float*)(void*)(&i));
}
}
这可以编译为单独的dll并从VB项目中引用。