在C
中,我将这样做以将数字的浮点表示转换为DWORD。从地址中获取值并将内容转换为DWORD。
dwordVal = *(DWORD*)&floatVal;
因此,例如44.54321
将成为0x42322C3F
。
我如何在C#
中执行相同操作?
答案 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);