PoolByteArray

Array 字节集合。

描述

一个 Array 专门设计用于保存字节。针对内存使用进行了优化,不会造成内存碎片。

注意: 这种类型是按值传递而不是按引用传递。

方法

PoolByteArray

PoolByteArray ( Array from )

void

append ( int byte )

void

append_array ( PoolByteArray array )

PoolByteArray

compress ( int compression_mode=0 )

PoolByteArray

decompress ( int buffer_size, int compression_mode=0 )

PoolByteArray

decompress_dynamic ( int max_output_size, int compression_mode=0 )

bool

empty ( )

String

get_string_from_ascii ( )

String

get_string_from_utf8 ( )

String

hex_encode ( )

int

insert ( int idx, int byte )

void

invert ( )

void

push_back ( int byte )

void

remove ( int idx )

void

resize ( int idx )

void

set ( int idx, int byte )

int

size ( )

PoolByteArray

subarray ( int from, int to )

方法说明

构建新的PoolByteArray。你可以选择传入一个通用的Array,它将被转换。


  • void append ( int byte )

向数组末尾追加一个元素(push_back 的别名)。


在这个数组的最后添加PoolByteArray


返回新的PoolByteArray,其中的数据被压缩。使用CompressionMode中的一个常数来设置压缩模式。


返回新的 PoolByteArray 解压数据。 buffer_size 设置未压缩数据的大小。使用 CompressionMode 常量之一设置压缩模式。


返回数据解压后的新 PoolByteArray 。使用 CompressionMode 的常数之一设置压缩模式。此方法仅接受 gzip 和deflate压缩模式。

此方法可能比 decompress 慢,因为它可能需要在解压时多次重新分配其输出缓冲器,因为 decompress 从一开始就知道它的输出缓冲器大小。

GZIP 的最大压缩比为 1032:1,这意味着小型压缩有效载荷极有可能减压到潜在的非常大输出。为了防止这种情况,您可以提供最大尺寸,允许此函数通过 max_output_size 以字节进行分配。通过 -1 将允许无限制输出。如果通过任何正值,并且解压超过给定的字节值,则将返回错误。


该数组为空时,返回 true


  • String get_string_from_ascii ( )

返回数组内容的副本为String。如果内容是ASCII码,可以通过get_string_from_utf8来对其快速替代。与UTF-8函数不同,该函数将每个字节映射为数组中的一个字符。多字节的序列不会被正确解释。对于解析用户输入的内容,总是使用get_string_from_utf8


  • String get_string_from_utf8 ( )

返回数组内容的副本String。比get_string_from_ascii慢,但支持UTF-8编码的数据。如果不确定数据的来源,请使用此函数。对于用户输入,应该始终首选此函数。


返回该数组的十六进制,表示为一个String

  1. var array = PoolByteArray([11, 46, 255])
  2. print(array.hex_encode()) # Prints: 0b2eff

在数组中给定的位置插入一个新元素。这个位置必须是有效的,或者是在数组的末端(idx == size())。


  • void invert ( )

将数组中的元素逆序排列。


  • void push_back ( int byte )

在数组的末尾追加一个元素。


  • void remove ( int idx )

从数组中删除位于索引的元素。


  • void resize ( int idx )

设置数组的大小。如果数组增长,则保留数组末尾的元素。如果数组缩小,则将数组截断为新大小。

注意: 添加的元素不会自动初始化为 0,并且会包含垃圾,即不确定值。


  • void set ( int idx, int byte )

改变给定索引处的字节。


返回数组的大小。


返回索引(包括)之间的PoolByteArray的片断为一个新的PoolByteArray。任何负的索引都被认为是从数组的末端开始的。