I skipped Mathematica Version 8, going directly from 7 to 9, so I’m not sure exactly when RawArray and ArrayObject were added to Mathematica. These are apparently compact forms, roughly comparable to PackedArray, of lists of:

- unsigned bytes ("Byte"),
- unsigned (16‑bit) halfwords ("Bit16"),
- unsigned (32‑bit) words ("Integer32", or "Integer", which maps to "Integer32"),
- machine float single ("Real32"), and
- machine float double ("Real", or "Double", which maps to "Real").

There’s sparse documentation. (That’s a mild joke.) I assume that packed arrays are machine double floats. How the "Real" version of a RawArray or ArrayObject is functionally different from a packed array, I don’t know.

If you extract one of these from a Mathematica object – perhaps as part of ColorProfileData – you may be wondering how to get the data out of it.

Just use Normal[ ].

To put one of these back together, use RawArray or ArrayObject[ ], presenting a first argument with "Byte" (for example), and the second object as the desired list, with elements in the correct range.