如何通过浮点表示将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);