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

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

 dwordVal = *(DWORD*)&floatVal; 

所以例如44.54321将变为0x42322C3F

我怎样才能在C#做同样的事情?

您可以使用BitConverter类:

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

您还可以使用unsafe上下文直接执行此操作:

 float floatVal = 44.54321F; uint value; unsafe { value = *((uint*)(&floatVal)); } Console.WriteLine("{0:x}", value); // 42322c3f 

但是,我强烈建议避免这种情况。 请参阅C#中是否应该使用指针(不安全的代码)?

使用BitConverter类:

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