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