ByteArray類的使用理解

flash.utils.ByteArray 類的使用

ByteArray 類提供用於優化讀取、寫入以及處理二進制數據的方法和屬性。

ByteArray字節數組中存儲的是字節流。

所以,在你存入的內容,都是轉化成字節的格式存儲的。

boolean類型,佔,一個字節,8位

double 類型,佔,佔八哥字節,8*8=64位。

不夠位數的補0,例如,3.1415926,把其轉化成二進制的形式然後在其數組中存儲,然後按8位爲一個字節,在ByteArray中佔一個位置(注意),

例如:

byteArr.writeDouble(Math.PI);

trace(byteArr[1]);            // 64
 trace(byteArr[2]);            // 9
 trace(byteArr[3]);            // 33
 trace(byteArr[4]);            // 251
  trace(byteArr[5]);            // 84
  trace(byteArr[6]);            // 68
  trace(byteArr[7]);            // 45
  trace(byteArr[8]);            // 24

其中輸出的結果中,例如64,就是其中排列中8位的十六進制

下面是,api中,關於此類的一個簡單的實例:

package {
    import flash.display.Sprite;
    import flash.utils.ByteArray;
    import flash.errors.EOFError;

    public class ByteArrayExample extends Sprite {        
        public function ByteArrayExample() {
            var byteArr:ByteArray = new ByteArray();

            byteArr.writeBoolean(false);
            trace(byteArr.length);            // 1
            trace(byteArr[0]);            // 0

            byteArr.writeDouble(Math.PI);
            trace(byteArr.length);            // 9
            trace(byteArr[0]);            // 0
            trace(byteArr[1]);            // 64
            trace(byteArr[2]);            // 9
            trace(byteArr[3]);            // 33
            trace(byteArr[4]);            // 251
            trace(byteArr[5]);            // 84
            trace(byteArr[6]);            // 68
            trace(byteArr[7]);            // 45
            trace(byteArr[8]);            // 24
            
            byteArr.position = 0;

            try {
                trace(byteArr.readBoolean() == false); // true
            } 
            catch(e:EOFError) {
                trace(e);           // EOFError: Error #2030: End of file was encountered.
            }
            
            try {
                trace(byteArr.readDouble());        // 3.141592653589793
            }
            catch(e:EOFError) {
                trace(e);           // EOFError: Error #2030: End of file was encountered.
            }
            
            try {
                trace(byteArr.readDouble());
            } 
            catch(e:EOFError) {
                trace(e);            // EOFError: Error #2030: End of file was encountered.
            }
        }
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章