Player 版本 : | Flash Player 9 |
ByteArray 类提供用于优化读取、写入以及处理二进制数据的方法和属性。
注意:ByteArray 类适用于需要在字节层访问数据的高级 ActionScript 开发人员。
内存中的数据是一个压缩字节数组(数据类型的最紧凑表示形式),但可以使用标准 ActionScript []
(数组访问)运算符来操作 ByteArray 类的实例。 也可以使用与 URLStream 和 Socket 类中的方法相类似的方法将它作为内存中的文件进行读取和写入。
此外,还支持 zlib 压缩和解压缩,以及 Action Message Format (AMF) 对象序列化。
ByteArray 类可能的用途包括:
- 创建用以连接到服务器的自定义协议。
- 编写自己的 URLEncoder/URLDecoder。
- 编写自己的 AMF/Remoting 包。
- 通过使用数据类型优化数据的大小。
查看示例
bytesAvailable:uint
[read-only]
Player 版本 : | Flash Player 9 |
可从字节数组的当前位置到数组末尾读取的数据的字节数。
每次访问 ByteArray 对象时,将 bytesAvailable
属性与读取方法结合使用,以确保读取有效的数据。
实现
public function get bytesAvailable():uint
defaultObjectEncoding:uint
[read-write]
Player 版本 : | Flash Player 9 |
指示用于新 ByteArray 实例的 ByteArray 类的默认对象编码。 在创建新的 ByteArray 实例时,该实例上的编码以 defaultObjectEncoding
的值开头。 defaultObjectEncoding
属性被初始化为 ObjectEncoding.AMF3
。
将对象写入二进制数据或从中读取对象时,将使用 objectEncoding
值来确定应使用 ActionScript 3.0、ActionScript2.0 还是 ActionScript 1.0 格式。 该值为 ObjectEncoding 类中的常数。
实现
public static function get defaultObjectEncoding():uint
public function set defaultObjectEncoding(value:uint):void
另请参见
endian:String
[read-write]
Player 版本 : | Flash Player 9 |
更改或读取数据的字节顺序:“bigEndian”或“littleEndian”。 这些值是 Endian 类中的常量。
实现
public function get endian():String
public function set endian(value:String):void
另请参见
length:uint
[read-write]
Player 版本 : | Flash Player 9 |
ByteArray 对象的长度(以字节为单位)。
如果长度设置为大于当前长度的值,Flash Player 将在右侧填充零。
如果长度设置为小于当前长度的值,数组将被截断。
实现
public function get length():uint
public function set length(value:uint):void
objectEncoding:uint
[read-write]
Player 版本 : | Flash Player 9 |
用于确定在写入或读取 ByteArray 实例时应使用 ActionScript 3.0、ActionScript 2.0 还是 ActionScript 1.0 格式。 该值为 ObjectEncoding 类中的常数。
实现
public function get objectEncoding():uint
public function set objectEncoding(value:uint):void
另请参见
position:uint
[read-write]
Player 版本 : | Flash Player 9 |
将文件指针的当前位置(以字节为单位)移动或返回到 ByteArray 对象中。 下一次调用读取方法时将在此位置开始读取,或者下一次调用写入方法时将在此位置开始写入。
实现
public function get position():uint
public function set position(value:uint):void
public function ByteArray()
Player 版本 : | Flash Player 9 |
创建一个表示填充的字节数组的 ByteArray 实例,以便使用此类中的方法和属性来优化数据存储和数据流。
public function compress():void
Player 版本 : | Flash Player 9 |
使用 zlib 压缩方法压缩字节数组。 将压缩整个字节数组。
另请参见
public function readBoolean():Boolean
Player 版本 : | Flash Player 9 |
从字节流中读取布尔值。 读取单个字节,如果字节非零,则返回 true
,否则返回 false
。
返回
| Boolean — 如果字节不为零,则返回 true ,否则返回 false 。
|
引发
public function readByte():int
Player 版本 : | Flash Player 9 |
从字节流中读取带符号的字节。
返回值的范围是从 -128 到 127。
返回
| int — 介于 -128 和 127 之间的整数。
|
引发
public function readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
Player 版本 : | Flash Player 9 |
从字节流中读取 length
参数指定的数据字节数。 从 offset
指定的位置开始将字节读入 bytes
参数指定的 ByteArray 对象。
参数
| bytes:ByteArray — 要将数据读入的 ByteArray 对象。
|
|
| offset:uint (default = 0 ) — bytes 中的偏移,应从该位置开始读取数据。
|
|
| length:uint (default = 0 ) — 要读取的字节数。 默认值 0 导致读取所有可用的数据。
|
引发
public function readDouble():Number
Player 版本 : | Flash Player 9 |
从字节流中读取一个 IEEE 754 双精度(64 位)浮点数。
返回
引发
public function readFloat():Number
Player 版本 : | Flash Player 9 |
从字节流中读取一个 IEEE 754 单精度(32 位)浮点数。
返回
引发
public function readInt():int
Player 版本 : | Flash Player 9 |
从字节流中读取一个带符号的 32 位整数。
返回值的范围是从 -2147483648 到 2147483647。
返回
| int — 介于 -2147483648 和 2147483647 之间的 32 位带符号整数。
|
引发
public function readMultiByte(length:uint, charSet:String):String
Player 版本 : | Flash Player 9 |
使用指定的字符集从字节流中读取指定长度的多字节字符串。
参数
| length:uint — 要从字节流中读取的字节数。
|
|
| charSet:String — 表示用于解释字节的字符集的字符串。 可能的字符集字符串包括 "shift-jis" 、"cn-gb" 、"iso-8859-1" ”等。 有关完整列表,请参阅Supported Character Sets。
注意:如果当前系统无法识别 charSet 参数的值,则 Flash Player 将采用系统的默认代码页作为字符集。 例如,charSet 参数的值(如在使用 01 而不是 1 的 myTest.readMultiByte(22, "iso-8859-01") 中)可能在您的开发计算机上起作用,但在其它计算机上可能不起作用。 在另一台计算机上,Flash Player 将使用系统的默认代码页。
|
返回
引发
public function readObject():*
Player 版本 : | Flash Player 9 |
从字节数组中读取一个以 AMF 序列化格式进行编码的对象。
返回
引发
public function readShort():int
Player 版本 : | Flash Player 9 |
从字节流中读取一个带符号的 16 位整数。
返回值的范围是从 -32768 到 32767。
返回
| int — 介于 -32768 和 32767 之间的 16 位带符号整数。
|
引发
public function readUnsignedByte():uint
Player 版本 : | Flash Player 9 |
从字节流中读取无符号的字节。
返回值的范围是从 0 到 255。
返回
| uint — 介于 0 和 255 之间的 32 位无符号整数。
|
引发
public function readUnsignedInt():uint
Player 版本 : | Flash Player 9 |
从字节流中读取一个无符号的 32 位整数。
返回值的范围是从 0 到 4294967295。
返回
| uint — 介于 0 和 4294967295 之间的 32 位无符号整数。
|
引发
public function readUnsignedShort():uint
Player 版本 : | Flash Player 9 |
从字节流中读取一个无符号的 16 位整数。
返回值的范围是从 0 到 65535。
返回
| uint — 介于 0 和 65535 之间的 16 位无符号整数。
|
引发
public function readUTF():String
Player 版本 : | Flash Player 9 |
从字节流中读取一个 UTF-8 字符串。 假定字符串的前缀是无符号的短整型(以字节表示长度)。
返回
引发
另请参见
public function readUTFBytes(length:uint):String
Player 版本 : | Flash Player 9 |
从字节流中读取一个由 length
参数指定的 UTF-8 字节序列,并返回一个字符串。
参数
| length:uint — 指明 UTF-8 字节长度的无符号短整型数。
|
返回
| String — 由指定长度的 UTF-8 字节组成的字符串。
|
引发
public function toString():String
Player 版本 : | Flash Player 9 |
将字节数组转换为字符串。 如果数组中的数据以 Unicode 字节顺序标记开头,Flash 在转换为字符串时将保持该标记。 如果 System.useCodePage
设置为 true
,播放器在转换时会将数组中的数据视为处于当前系统代码页中。
返回
public function uncompress():void
Player 版本 : | Flash Player 9 |
解压缩字节数组。 字节数组必须事先使用 compress()
方法压缩过。
另请参见
public function writeBoolean(value:Boolean):void
Player 版本 : | Flash Player 9 |
写入布尔值。 根据 value
参数写入单个字节。如果为 true
,则写入 1,如果为 false
,则写入 0。
参数
| value:Boolean — 确定写入哪个字节的布尔值。 如果该参数为 true ,Flash Player 将写入 1;如果为 false ,Flash Player 将写入 0。
|
public function writeByte(value:int):void
Player 版本 : | Flash Player 9 |
在字节流中写入一个字节。
使用参数的低 8 位。 忽略高 24 位。
参数
| value:int — 一个 32 位整数。 低 8 位将被写入字节流。
|
public function writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
Player 版本 : | Flash Player 9 |
将指定字节数组 bytes
(起始偏移量为 offset
,从零开始的索引)中包含 length
个字节的字节序列写入字节流。
如果省略 length
参数,则使用默认长度 0;Flash Player 从 offset
开始写入整个缓冲区。 如果还省略了 offset
参数,则写入整个缓冲区。
如果 offset
或 length
超出范围,它们将被锁定到 bytes
数组的开头和结尾。
参数
| bytes:ByteArray — ByteArray 对象。
|
|
| offset:uint (default = 0 ) — 从 0 开始的索引,表示在数组中开始写入的位置。
|
|
| length:uint (default = 0 ) — 一个无符号整数,表示在缓冲区中的写入范围。
|
public function writeDouble(value:Number):void
Player 版本 : | Flash Player 9 |
在字节流中写入一个 IEEE 754 双精度(64 位)浮点数。
参数
public function writeFloat(value:Number):void
Player 版本 : | Flash Player 9 |
在字节流中写入一个 IEEE 754 单精度(32 位)浮点数。
参数
public function writeInt(value:int):void
Player 版本 : | Flash Player 9 |
在字节流中写入一个带符号的 32 位整数。
参数
public function writeMultiByte(value:String, charSet:String):void
Player 版本 : | Flash Player 9 |
使用指定的字符集将多字节字符串写入字节流。
参数
public function writeObject(object:*):void
Player 版本 : | Flash Player 9 |
将对象以 AMF 序列化格式写入字节数组。
参数
public function writeShort(value:int):void
Player 版本 : | Flash Player 9 |
在字节流中写入一个 16 位整数。 使用参数的低 16 位。 忽略高 16 位。
参数
| value:int — 32 位整数,该整数的低 16 位将被写入字节流。
|
public function writeUnsignedInt(value:uint):void
Player 版本 : | Flash Player 9 |
在字节流中写入一个无符号的 32 位整数。
参数
| value:uint — 要写入字节流的无符号整数。
|
public function writeUTF(value:String):void
Player 版本 : | Flash Player 9 |
将 UTF-8 字符串写入字节流。 先写入以字节表示的 UTF-8 字符串长度(作为 16 位整数),然后写入表示字符串字符的字节。
参数
引发
public function writeUTFBytes(value:String):void
Player 版本 : | Flash Player 9 |
将 UTF-8 字符串写入字节流。 类似于 writeUTF()
方法,但 writeUTFBytes()
不使用 16 位长度的词为字符串添加前缀。
参数
以下示例使用
ByteArrayExample
类将布尔值和 pi 的双精度浮点表示形式写入字节数组。 这是使用以下步骤完成的:
- 声明新的 ByteArray 对象实例
byteArr
。 - 写入布尔值
false
的字节等效值,然后检查长度并重新读取。 - 写入数学值 pi 的双精度浮点等效值。
- 重新读取写入字节数组的九个字节中的每一个字节。
注意:在字节上调用 trace()
时,它将输出存储于字节数组中的字节的十进制等效值。
注意如何在末尾添加一段代码以检查文件结尾错误,确保读取的字节流没有超出文件结尾。
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.
}
}
}
}
© 2004-2007 Adobe Systems Incorporated. All rights reserved.
Wed Jun 13 2007, 3:54 AM GMT-07:00
当前页: http://livedocs.adobe.com/flash/9.0_cn/ActionScriptLangRefV3/flash/utils/ByteArray.html