0

建议有二进制流包含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 循环。有什么方法可以固定它吗?

4

1 回答 1

0

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

于 2013-09-04T12:09:14.770 回答