| 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