How to convert float to uint by float representation?

c#, data-conversion, floating-point, integer

Solution

You can use the `BitConverter` class:

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

You could also do this more directly using an `unsafe` context:

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

However, I'd strongly recommend avoiding this. See Should you use pointers (unsafe code) in C#?

Problem

In C I will do this to convert float representation of number into DWORD. Take the value from the address and cast the content to DWORD. ``` dwordVal = *(DWORD*)&floatVal; ``` So for example `44.54321` will become `0x42322C3F`. How can I do the same in `C#`?

Original source

Related problems