什么是“压缩”二进制流的最快方法?

时间:2013-09-04 06:13:31

标签: actionscript-3

建议有二进制流包含8个字节

我想获得一个包含此内容的新流:

将每个咬合的每个第一位形成第一个字节

每咬一下第二位以形成第二个字节

...

每咬一下第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);

这不擅长处理大量数据。我必须逐个读取和写入字节,并为每个8字节块执行8x8循环。有哪种方法可以加固它?

1 个答案:

答案 0 :(得分:0)

检查工人,他们是as3中最接近线程的东西。他们会进行并行计算,在等待所有8个完成后,你将结合你的结果。它还会因计算而停止接口锁定。