ByteArrayベースとreadBytesとwriteBytesの簡単なテスト

6616 ワード

数値アクセス:
readBoolean,writeBoolean,readByte,writeByte等..以下Boolean、Byte等と略す...占有バイト数1:Boolean,Byte,UnsignedByte(byte単位でアクセスするため、所望のBooleanも1バイト占有する)占有バイト数2:Short,UnsignedShort占有バイト数4:Int,Float,UnsignedInt占有バイト数8:DoubleUnsignedは符号無しクラス型を表し、正数のみを表す、そうでなければ符号あり、正負数を表すことができる.
 
byteArray.readBytes(bytes:ByteArray,offset:uint=0,length:uint=0):voidはbyteArrayのbyteArrayからpositionが開始する、lengthのバイトをbytesに読み込み、bytesはoffsetから再生する.(bytesのpositionは変わらずbytesArrayのpositionは増加)
 
var byteArray:ByteArray = new ByteArray();
byteArray.writeInt(1);
trace ("byteArray.position:", byteArray.position); //byteArray.position: 4
byteArray.writeInt(2);
trace ("byteArray.position:", byteArray.position); //byteArray.position: 8
byteArray.writeInt(3);
trace ("byteArray.position:", byteArray.position); //byteArray.position: 12
byteArray.position = 0;
trace ("byteArray.position:", byteArray.position); //byteArray.position: 0

var bytes:ByteArray = new ByteArray();
bytes.writeInt(99);
byteArray.readBytes(bytes, 20, 4);

// byteArray.position , 4  byteArray.position 4;
// 4 offset ;
// byteArray.position=4 bytes.bytesAvailable=12-4=8;
// bytes 40 0   4 a 32 Int 1 bytes.bytesAvailable=40+4;
// bytes position。 b.position=0;

trace ("byteArray.position:", byteArray.position, "byteArray.bytesAvailable:", byteArray.bytesAvailable); //byteArray.position: 4 byteArray.bytesAvailable: 8
trace ("bytes.position:", bytes.position, "bytes.bytesAvailable:", bytes.bytesAvailable); //bytes.position: 0 bytes.bytesAvailable: 44

byteArray.writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
bytesのoffsetから、lengthバイトを読み出してbyteArrayに入れ、byteArrayはbyteArrayから運転開始(bytesのpositionは変わらずbyteArrayのpositionは増加)
 
var bytes:ByteArray = new ByteArray();
bytes.writeInt(1);
bytes.writeInt(2);
bytes.writeInt(3);
bytes.position = 0;

//byteArray.writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
// bytes offset , length byteArray ,byteArray byteArray.position . 
//(bytes position , byteArray position )
var byteArray:ByteArray = new ByteArray();
byteArray.writeInt(100);
byteArray.writeInt(200);
byteArray.writeInt(300);
trace ("byteArray:", byteArray.position);
byteArray.writeBytes(bytes, 4, 8);
trace ("byteArray.position:", byteArray.position, "byteArray.bytesAvailable:", byteArray.bytesAvailable);
trace ("bytes.position:", bytes.position, "bytes.bytesAvailable:", bytes.bytesAvailable);
//bytes.position 
//byteArray.position 8
//byteArray.position: 8 byteArray.bytesAvailable: 0
//bytes.position: 0 bytes.bytesAvailable: 12

byteArray.position = 0;
while (byteArray.bytesAvailable)
    trace (byteArray.readInt());

//100
//200
//300
//2
//3

 
まとめ:byteArrayはbyteArrayからpositionが始まる(読み書きにかかわらず)、bytesはoffsetから始まる(読み書きにかかわらず).