跳到主要内容

egret.ByteArray

   egret

   public class ByteArray

ByteArray 类提供用于优化读取、写入以及处理二进制数据的方法和属性。注意:ByteArray 类适用于需要在字节层访问数据的高级开发人员。

公共属性

属性
bytes : Uint8Array
bytesAvailable : number
可从字节数组的当前位置到数组末尾读取的数据的字节数
endian :
更改或读取数据的字节顺序;egret.EndianConst.BIG_ENDIAN 或 egret.EndianConst.LITTLE_ENDIAN
length : number
ByteArray 对象的长度(以字节为单位)
position : number
将文件指针的当前位置(以字节为单位)移动或返回到 ByteArray 对象中
rawBuffer : ArrayBuffer
readAvailable :
可读的剩余字节数

公共方法

方法
ByteArray(buffer:ArrayBuffer|Uint8Array,bufferExtSize)
clear(): void
清除字节数组的内容,并将 length 和 position 属性重置为 0
readBoolean(): boolean
从字节流中读取布尔值
readByte(): number
从字节流中读取带符号的字节
readBytes(bytes: egret.ByteArray,offset: number,length: number): void
从字节流中读取 length 参数指定的数据字节数
readDouble(): number
从字节流中读取一个 IEEE 754 双精度(64 位)浮点数
readFloat(): number
从字节流中读取一个 IEEE 754 单精度(32 位)浮点数
readInt(): number
从字节流中读取一个带符号的 32 位整数
readShort(): number
从字节流中读取一个带符号的 16 位整数
readUTF(): string
从字节流中读取一个 UTF-8 字符串
readUTFBytes(length: number): string
从字节流中读取一个由 length 参数指定的 UTF-8 字节序列,并返回一个字符串
readUnsignedByte(): number
从字节流中读取无符号的字节
readUnsignedInt(): number
从字节流中读取一个无符号的 32 位整数
readUnsignedShort(): number
从字节流中读取一个无符号的 16 位整数
setArrayBuffer(buffer:ArrayBuffer): void
writeBoolean(value: boolean): void
写入布尔值
writeByte(value: number): void
在字节流中写入一个字节使用参数的低 8 位
writeBytes(bytes: egret.ByteArray,offset: number,length: number): void
将指定字节数组 bytes(起始偏移量为 offset,从零开始的索引)中包含 length 个字节的字节序列写入字节流如果省略 length 参数,则使用默认长度 0;该方法将从 offset 开始写入整个缓冲区
writeDouble(value: number): void
在字节流中写入一个 IEEE 754 双精度(64 位)浮点数
writeFloat(value: number): void
在字节流中写入一个 IEEE 754 单精度(32 位)浮点数
writeInt(value: number): void
在字节流中写入一个带符号的 32 位整数
writeShort(value: number): void
在字节流中写入一个 16 位整数
writeUTF(value: string): void
将 UTF-8 字符串写入字节流
writeUTFBytes(value: string): void
将 UTF-8 字符串写入字节流
writeUnsignedInt(value: number): void
在字节流中写入一个无符号的 32 位整数
writeUnsignedShort(value: number): void
在字节流中写入一个无符号的 16 位整数

属性详细信息

bytes

bytes : Uint8Array

  • 支持版本:all
  • 运行平台:Web,Native

bytesAvailable

bytesAvailable : number

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

可从字节数组的当前位置到数组末尾读取的数据的字节数。每次访问 ByteArray 对象时,将 bytesAvailable 属性与读取方法结合使用,以确保读取有效的数据。

endian

endian : = egret.EndianConst.BIG_ENDIAN

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

更改或读取数据的字节顺序;egret.EndianConst.BIG_ENDIAN 或 egret.EndianConst.LITTLE_ENDIAN。

length

length : number

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

ByteArray 对象的长度(以字节为单位)。如果将长度设置为大于当前长度的值,则用零填充字节数组的右侧。如果将长度设置为小于当前长度的值,将会截断该字节数组。

position

position : number

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

将文件指针的当前位置(以字节为单位)移动或返回到 ByteArray 对象中。下一次调用读取方法时将在此位置开始读取,或者下一次调用写入方法时将在此位置开始写入。

rawBuffer

rawBuffer : ArrayBuffer

  • 支持版本:all
  • 运行平台:Web,Native

readAvailable

readAvailable :

  • 支持版本:all
  • 运行平台:Web,Native

可读的剩余字节数

方法详细信息

ByteArray()

public ByteArray(buffer:ArrayBuffer|Uint8Array,bufferExtSize)

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    • buffer:ArrayBuffer|Uint8Array
    • bufferExtSize

clear()

public clear(): void

清除字节数组的内容,并将 length 和 position 属性重置为 0。

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

readBoolean()

public readBoolean(): boolean

从字节流中读取布尔值。读取单个字节,如果字节非零,则返回 true,否则返回 false

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 返回:如果字节不为零,则返回 true,否则返回 false

readByte()

public readByte(): number

从字节流中读取带符号的字节

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 返回:介于 -128 和 127 之间的整数

readBytes()

public readBytes(bytes: egret.ByteArray,offset: number,length: number): void

从字节流中读取 length 参数指定的数据字节数。从 offset 指定的位置开始,将字节读入 bytes 参数指定的 ByteArray 对象中,并将字节写入目标 ByteArray 中

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    • bytes: egret.ByteArray - 要将数据读入的 ByteArray 对象
    • offset: number - bytes 中的偏移(位置),应从该位置写入读取的数据
    • length: number - 要读取的字节数。默认值 0 导致读取所有可用的数据

readDouble()

public readDouble(): number

从字节流中读取一个 IEEE 754 双精度(64 位)浮点数

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 返回:双精度(64 位)浮点数

readFloat()

public readFloat(): number

从字节流中读取一个 IEEE 754 单精度(32 位)浮点数

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 返回:单精度(32 位)浮点数

readInt()

public readInt(): number

从字节流中读取一个带符号的 32 位整数

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 返回:介于 -2147483648 和 2147483647 之间的 32 位带符号整数

readShort()

public readShort(): number

从字节流中读取一个带符号的 16 位整数

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 返回:介于 -32768 和 32767 之间的 16 位带符号整数

readUTF()

public readUTF(): string

从字节流中读取一个 UTF-8 字符串。假定字符串的前缀是无符号的短整型(以字节表示长度)

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 返回:UTF-8 编码的字符串

readUTFBytes()

public readUTFBytes(length: number): string

从字节流中读取一个由 length 参数指定的 UTF-8 字节序列,并返回一个字符串

  • 支持版本:Egret 2.4

  • 运行平台:Web,Native

  • 参数

    • length: number - 指明 UTF-8 字节长度的无符号短整型数
  • 返回:由指定长度的 UTF-8 字节组成的字符串

readUnsignedByte()

public readUnsignedByte(): number

从字节流中读取无符号的字节

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 返回:介于 0 和 255 之间的无符号整数

readUnsignedInt()

public readUnsignedInt(): number

从字节流中读取一个无符号的 32 位整数

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 返回:介于 0 和 4294967295 之间的 32 位无符号整数

[readUnsignedShort()

public readUnsignedShort(): number

从字节流中读取一个无符号的 16 位整数

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 返回:介于 0 和 65535 之间的 16 位无符号整数

setArrayBuffer()

public setArrayBuffer(buffer:ArrayBuffer): void

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    • buffer:ArrayBuffer

writeBoolean()

public writeBoolean(value: boolean): void

写入布尔值。根据 value 参数写入单个字节。如果为 true,则写入 1,如果为 false,则写入 0

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    • value: boolean - 确定写入哪个字节的布尔值。如果该参数为 true,则该方法写入 1;如果该参数为 false,则该方法写入 0

writeByte()

public writeByte(value: number): void

在字节流中写入一个字节使用参数的低 8 位。忽略高 24 位

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    • value: number - 一个 32 位整数。低 8 位将被写入字节流

writeBytes()

public writeBytes(bytes: egret.ByteArray,offset: number,length: number): void

将指定字节数组 bytes(起始偏移量为 offset,从零开始的索引)中包含 length 个字节的字节序列写入字节流如果省略 length 参数,则使用默认长度 0;该方法将从 offset 开始写入整个缓冲区。如果还省略了 offset 参数,则写入整个缓冲区如果 offset 或 length 超出范围,它们将被锁定到 bytes 数组的开头和结尾

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    • bytes: egret.ByteArray - ByteArray 对象
    • offset: number - 从 0 开始的索引,表示在数组中开始写入的位置
    • length: number - 一个无符号整数,表示在缓冲区中的写入范围

writeDouble()

public writeDouble(value: number): void

在字节流中写入一个 IEEE 754 双精度(64 位)浮点数

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    • value: number - 双精度(64 位)浮点数

writeFloat()

public writeFloat(value: number): void

在字节流中写入一个 IEEE 754 单精度(32 位)浮点数

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    • value: number - 单精度(32 位)浮点数

writeInt()

public writeInt(value: number): void

在字节流中写入一个带符号的 32 位整数

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    • value: number - 要写入字节流的整数

writeShort()

public writeShort(value: number): void

在字节流中写入一个 16 位整数。使用参数的低 16 位。忽略高 16 位

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    • value: number - 32 位整数,该整数的低 16 位将被写入字节流

writeUTF()

public writeUTF(value: string): void

将 UTF-8 字符串写入字节流。先写入以字节表示的 UTF-8 字符串长度(作为 16 位整数),然后写入表示字符串字符的字节

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    • value: string - 要写入的字符串值

writeUTFBytes()

public writeUTFBytes(value: string): void

将 UTF-8 字符串写入字节流。类似于 writeUTF() 方法,但 writeUTFBytes() 不使用 16 位长度的词为字符串添加前缀

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    • value: string - 要写入的字符串值

writeUnsignedInt()

public writeUnsignedInt(value: number): void

在字节流中写入一个无符号的 32 位整数

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    • value: number - 要写入字节流的无符号整数

writeUnsignedShort()

public writeUnsignedShort(value: number): void

在字节流中写入一个无符号的 16 位整数

  • 支持版本:Egret 2.5
  • 运行平台:Web,Native
  • 参数
    • value: number - 要写入字节流的无符号整数

示例


/*
* 下面的示例使用 ByteArrayExample 类创建新 ByteArray 对象,然后使用 egret.log() 方法输出各种类方法的结果。
*/
class ByteArrayExample extends egret.DisplayObjectContainer {
public constructor() {
super();
var byteArray:egret.ByteArray = new egret.ByteArray();
byteArray.writeUTF("Hello Egret");
byteArray.writeBoolean(false);
byteArray.writeByte(32);
byteArray.position = 0;
egret.log(byteArray.readUTF());//Hello Egret
egret.log(byteArray.readBoolean());//false
egret.log(byteArray.readByte());//32
}
}