如何通过浮点表示将float转换为int?

时间:2014-02-15 17:42:52

标签: c# floating-point int

C中,我将这样做以将数字的浮点表示转换为DWORD。从地址中获取值并将内容转换为DWORD。

dwordVal = *(DWORD*)&floatVal;

因此,例如44.54321将成为0x42322C3F

我如何在C#中执行相同操作?

2 个答案:

答案 0 :(得分:12)

您可以使用BitConverter类:

uint value = BitConverter.ToUInt32(BitConverter.GetBytes(44.54321F), 0);
Console.WriteLine("{0:x}", value); // 42322c3f

您还可以使用unsafe context

直接执行此操作
float floatVal = 44.54321F;
uint value;
unsafe { 
    value = *((uint*)(&floatVal));
}
Console.WriteLine("{0:x}", value); // 42322c3f

但是,我强烈建议避免这种情况。见Should you use pointers (unsafe code) in C#?

答案 1 :(得分:3)

使用BitConverter类:

float f = 44.54321f;
uint u = BitConverter.ToUInt32(BitConverter.GetBytes(f), 0);
System.Diagnostics.Debug.Assert(u == 0x42322C3F);