4 ms·
Yes. Use memcpy if you need to do this! This is especially important when you're on a platform that requires aligned pointers. For example, the following code w
by jakobegger 12y ago
Yes. Use memcpy if you need to do this! This is especially important when you're on a platform that requires aligned pointers. For example, the following code will crash on ARM
char bytes[5] = {0};
float flt = *(float*)&(bytes[1]);
Using memcpy works on any platform with 4 byte floats:
char bytes[5] = {0};
float flt;
memcpy(&flt, &(bytes[1]), 4);
- markrages 12y agoBut the union won't crash either (the compiler will keep it aligned), the conversion compiles to no-op, and doesn't waste memory. Embedded targets are always memory-constrained. If they aren't, you are wasting money on hardware.
- jakobegger 12y agoI was thinking about the case when you get unaligned data (eg you are reading from a file or from the network). Then you need to copy the data anyway.