ByteData抽象 最终

一个固定长度的随机访问字节数组序列,同时也提供对这些字节表示的固定宽度整数和浮点数随机和未对齐的访问。

ByteData可用于从一个外部来源(如网络或文件系统)打包和解析数据,并且可以比普通的List实现更高效地处理大量数值数据。ByteData可以通过消除对象头部的需要来节省空间,并且通过消除数据复制的需要来节省时间。

如果数据以字节的形式到来,可以通过共享同一个缓冲区将它们转换为ByteData

Uint8List bytes = ...;
var blob = ByteData.sublistView(bytes);
if (blob.getUint32(0, Endian.little) == 0x04034b50) { // Zip file marker
  ...
}

最后,ByteData可以用来有意地将表示一种算术类型的字节重新解释为其他类型。例如,这段代码片段确定了由32位浮点数的字节表示的32位有符号整数(两者都存储为大端序)

var bdata = ByteData(8);
bdata.setFloat32(0, 3.04);
int huh = bdata.getInt32(0); // 0x40428f5c

尝试扩展或实现ByteData的类会导致编译时错误。

实现的类型
实现者
可用的扩展

构造函数

ByteData(int length)
创建一个指定长度(以元素计)的ByteData,其中所有字节最初为0。
工厂
ByteData.sublistView(TypedData data, int start = 0, int? end])
data的一系列元素上创建一个ByteData视图。
工厂
ByteData.view(ByteBuffer buffer, int offsetInBytes = 0, int? length])
创建一个指定区域在buffer上的ByteData视图。
工厂

属性

buffer ByteBuffer
返回与此对象相关的字节数组。
no setterinherited
elementSizeInBytes int
返回此列表中每个元素表示的字节数。
no setterinherited
hashCode int
此对象的哈希码。
no setterinherited
lengthInBytes int
返回此视图的长度,以字节为单位。
no setterinherited
offsetInBytes int
返回此视图在基本字节数组中的偏移量(以字节为单位)。
no setterinherited
runtimeType Type
对象运行时类型的表示。
no setterinherited

方法

asUnmodifiableView() ByteData
ByteData 的只读视图。
getFloat32(int byteOffset, [Endian endian = Endian.big]) double
返回在此对象的指定 byteOffset 处表示的浮点数,格式为 IEEE 754 单精度二进制浮点数(binary32)。
getFloat64(int byteOffset, [Endian endian = Endian.big]) double
返回在此对象的指定 byteOffset 处表示的浮点数,格式为 IEEE 754 双精度二进制浮点数(binary64)。
getInt16(int byteOffset, [Endian endian = Endian.big]) int
返回在此对象的指定 byteOffset 处表示的(可能是负数)整数,形式为两补码二进制。
getInt32(int byteOffset, [Endian endian = Endian.big]) int
返回在此对象的指定 byteOffset 处表示的(可能是负数)整数,形式为两补码二进制。
getInt64(int byteOffset, [Endian endian = Endian.big]) int
返回在此对象的指定 byteOffset 处表示的(可能是负数)整数,形式为两补码二进制。
getInt8(int byteOffset) int
返回在此对象的指定 byteOffset 处表示的(可能是负数)整数,形式为两补码二进制表示。
getUint16(int byteOffset, [Endian endian = Endian.big]) int
返回从对象中指定 byteOffset 开始的两个字节表示的正整数,以无符号二进制形式。
getUint32(int byteOffset, [Endian endian = Endian.big]) int
返回从对象中指定 byteOffset 开始的四个字节表示的正整数,以无符号二进制形式。
getUint64(int byteOffset, [Endian endian = Endian.big]) int
返回从对象中指定 byteOffset 开始的八个字节表示的正整数,以无符号二进制形式。
getUint8(int byteOffset) int
返回从对象中指定 byteOffset 开始的字节表示的正整数,以无符号二进制形式。
noSuchMethod(Invocation invocation) → dynamic
当访问不存在的方法或属性时调用。
继承
setFloat32(int byteOffset, double value, [Endian endian = Endian.big]) → void
将对象中指定 byteOffset 开始的四个字节设置为指定 value 的 IEEE 754 单精度二进制浮点数(二进制32位)表示。
setFloat64(int byteOffset, double value, [Endian endian = Endian.big]) → void
将对象中指定 byteOffset 开始的八个字节设置为指定 value 的 IEEE 754 双精度二进制浮点数(二进制64位)表示。
setInt16(int byteOffset, int value, [Endian endian = Endian.big]) → void
将此对象中从指定 byteOffset 开始的两个字节设置为指定 value 的二进制补码表示,该值必须能放入两个字节中。
setInt32(int byteOffset, int value, [Endian endian = Endian.big]) → void
将此对象中从指定 byteOffset 开始的四个字节设置为指定 value 的二进制补码表示,该值必须能放入四个字节中。
setInt64(int byteOffset, int value, [Endian endian = Endian.big]) → void
将此对象中从指定 byteOffset 开始的八个字节设置为指定 value 的二进制补码表示,该值必须能放入八个字节中。
setInt8(int byteOffset, int value) → void
将此对象中从指定 byteOffset 开始的字节设置为指定 value 的二进制补码表示,该值必须能放入单个字节中。
setUint16(int byteOffset, int value, [Endian endian = Endian.big]) → void
将此对象中从指定 byteOffset 开始的两个字节设置为指定 value 的无符号二进制表示,该值必须能放入两个字节中。
setUint32(int byteOffset, int value, [Endian endian = Endian.big]) → void
将此对象中以指定 byteOffset 开始的四个字节设置为指定 value 的无符号二进制表示形式,该值必须适合四个字节。
setUint64(int byteOffset, int value, [Endian endian = Endian.big]) → void
将此对象中以指定 byteOffset 开始的八个字节设置为指定 value 的无符号二进制表示形式,该值必须适合八个字节。
setUint8(int byteOffset, int value) → void
将此对象中以指定 byteOffset 开始的字节设置为指定 value 的无符号二进制表示形式,该值必须适合单个字节。
toString() String
此对象的一个字符串表示。
继承

运算符

operator ==(Object other) bool
等于运算符。
继承