Как я понимаю, вопрос был в каком формате хранятся пиксели в ByteArray.
Аналогично этому:

Код:
var ar:Array = new Array();
for (var y:int=0; y<bitmap.height; y++) {
for (var x:int=0; x<bitmap.width; x++) {
ar.push(bitmap.getPixel32(x,y));
}
}
И поскольку в byteArray пиксели записываются как unsigned integer, то читах их следует не побайтно, а с помощью readUnsignedInt:

Код:
byteArray.position=0;
while (byteArray.position < byteArray.length) {
trace(byteArray.readUnsignedInt().toString(16));
}
А то, что copyPixels работает быстрее надо просто принять как факт, скорее всего там происходит тупо копирование куска памяти в то время как в getPixels и setPixels создание нового объекта ByteArray с последовательным преобразованием пикселей туда обратно.