vtphotonics,
Good question. It looks like I need to write a Knowledgebase on this question. When you cast from a single (32bit float) to a U8, you are not grabbing the 8 most significant bits of the single (like casting from I16 to U8). Rather the float value is converted to a U8 the same way LabVIEW coerces a Float to U8.
For example +255 float (01000011011111110000000000000000) will be converted to U8 255 (11111111), not (01000011).
I realize this is extremely confusing if you are expecting the cast to happen on a bit level. The cast function does not actually cast the data in this case rather it converts the data.
If you want to only extract the 8 most signficant bits, I would cast the data to a U8 before converting the array to an image.
I hope I answered your question,
Lorne Hengst
Application Engineer