0

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 ループを実行する必要があります。固定する方法はありますか?

4

1 に答える 1

0

ワーカーを確認してください。ワーカーは as3 のスレッドに最も近いものです。それらは並列計算を行い、8 つすべてが完了するのを待ってから、結果を結合します。また、計算によるインターフェイスのロックも停止します。

于 2013-09-04T12:09:14.770 に答える