The type cast doesn't due any conversions or change the data in any way. It just tells LabVIEW to look at the data in a new way.
As you noted, each boolean is stored as 1 byte, so doing a *normal* typecast will give the results you describe. As you say this makes sense. Zero translates to False, anything else to True.
However, this wasn't always the case. In LabVIEW 4.x and earlier, boolean arrays were stored as packed bits and a type cast of U8 to boolean array would give you an 8 element boolean array.
Nadav's post reminded me of this, so he was right but he didn't give you the full story. If you right click the typecast node, you can select "Convert 4.x Data" and you should get the results you desire.
Thanks Nadav for the
reminder of this "forgotten" capability.
A caveat: It is possible that NI could discontinue this convert option in future versions of LabVIEW. BTW, this option also exists for the flatten/unflatten functions.
The for loop method is still very valid and I don't think you should be experiencing speed problems with that either (unless [maybe] you're working with really huge arrays or limited RAM).
Good Luck,
Scott