I don’t know how FieldOffset could be placed before the variable definition!
FieldOffset is an attribute, and the full name of the class is
FieldOffsetAttribute. This specific attribute can be placed before (or “on”) fields.
how does this happen?
This specific attribute instructs the compiler to generate the fields “on top of each other”, so
Field2Float resolve to the same memory locations, with the same size (both
float have the same size).
Though you’re missing the important second half of these kinds of declarations, using a
struct and declaring it with
StructLayout, otherwise the compiler is still more or less free to mangle your class definition up.
A quick Google search shows
struct.pack can be used to convert
int and back byte-wise in Python, which is what this sample is doing. By the way, this is not the only way to do this in C#, you can simply reinterpret a pointer to
int* into a pointer to
float* and then dereference it, much like in C.
CLICK HERE to find out more related problems solutions.