8バイトを含むバイナリストリームがあることを示唆
これを含む新しいストリームを取得したい:
各バイトの最初のビットをすべて取得して最初のバイトを形成する
2 番目のバイトを形成するために、各バイトの 2 番目のビットをすべて取得する
....
各バイトの 8 ビットごとに取得して、最後のバイトを形成する
Python の zip() と同じですが、バイナリ形式です。
これが私のコードです
//create example data
var ba:ByteArray = new ByteArray();
for(var i:int=0;i<8;i++){
ba.writeByte(Math.random()*256);
}
ba.position = 0;
//process 8 bytes
var eightbytes:Array = new Array();
for(i=0;i<8;i++){
eightbytes.push(ba.readByte());
}
var j:int = 128;
var ba2:ByteArray = new ByteArray();
for(i=0;i<8;i++){
var result:int = 0;
for(var k:int = 0;k<8;k++){
var byte:int = eightbytes[k]&j;
if(i<k){
byte = byte>>(k-i);
}else if(i>k){
byte = byte<<(i-k);
}
result=result||byte;
}
ba2.writeByte(result);
j=j>>1;
}
trace(ba);
trace(ba2);
これは大量のデータを処理するのが苦手です。バイトを 1 つずつ読み書きし、8 バイトのブロックごとに 8x8 ループを実行する必要があります。固定する方法はありますか?