缓冲区是一个表示固定大小可变存储块的对象。缓冲库提供创建和操纵缓冲对象的函数,为其所有功能提供全球 buffer 变量内。
缓冲器的目的是用于低级二进制数据存储结构,替换 string.pack() 和 string.unpack() 的使用。使用案例包括阅读和写入现有的二进制格式、以更 компакт的形式处理数据、将自定义二进制格式序列化到固定长度的整数和浮点类型以及对原生内存类型的一般工作,例如固定长度的整数和浮点。
当通过 Roblox API 传送时,包括通过自定义事件发送缓冲,缓冲对象的身份不会被保留,目标将收到一份副本。与其他限制类似,同一个缓冲对象不能从多个 Actor 脚本中使用(并行 Luau)。
许多函数从缓冲区开始接受字节偏移。从缓冲存储块访问开始的 0 偏移访问第一个字节。所有抵消、计数和尺寸都应该是非负整数数字。如果通过任何读写操作访问的字节超出缓冲内存,将抛出错误。
使用整数和漂浮的方法 read 和 write 工作的方法使用 小端到端编码
概要
职能
创建一个缓冲器。
从字符串创建一个缓冲器。
将缓冲区转换为字符串。
返回缓冲区的大小以字节计。
读取一系列位元到未签名整数从缓冲区,基于特定的 bitCount 整数从 0 到 32 ,包括在内。
从缓冲区读取 8 位签名整数。
从缓冲区读取 8 位未签名整数。
从缓冲区读 16 位签名整数。
从缓冲区读 16 位未签名整数。
从缓冲区读取 32 位签名整数。
从缓冲区读取 32 位未签名整数。
从缓冲区读取 32 位浮点值。
从缓冲区读取 64 位浮点值。
根据特定的 bitCount 整数从 0 到 32 写数据到缓冲区,包括在内。
向缓冲区写入 8 位签名整数。
向缓冲区写入 8 位未签名整数。
将 16 位签名整数写入缓冲区。
将 16 位未签名整数写入缓冲区。
将 32 位签名整数写入缓冲区。
将 32 位未签名整数写入缓冲区。
将 32 位浮点值写入缓冲区。
将 64 位浮点值写入缓冲区。
从缓冲区读取一个字符串。
向缓冲区写入字符串。
复制缓冲区之间的字节。
将缓冲存储的区域设置为某些 8 位未签名整数值。
职能
readbits
读取一系列位元到未签名整数从缓冲区,基于特定的 bitCount 整数从 0 到 32 ,包括在内。例如:
- buffer.readbits(b, 0, 8) 等于 buffer.readu8(b, 0) .
- buffer.readbits(b, 0, 16) 等于 buffer.readu16(b, 0) .
- buffer.readbits(b, 0, 32) 等于 buffer.readu32(b, 0) .
- buffer.readbits(b, 0, 24) 读取缓冲区的 24 位。
请注意,0 位宽只支持在动态计数的一般情况下不出错,阅读 0 位返回 0 。请注意,由于缓冲区的最大尺寸为 1GB, bitOffset 不能像其他缓冲区函数中的 32 位整数数量一样处理。
返回
writebits
根据特定的 bitCount 整数从 0 到 32 写数据到缓冲区,包括在内。 被视为未签名的 32 位数字,只写最小重要位数。
请注意,0 位宽只支持在动态计数的一般情况下不出错,写入 0 位没有影响。请注意,由于缓冲区的最大尺寸为 1GB, bitOffset 不能像其他缓冲区函数中的 32 位整数数量一样处理。
参数
返回
copy
从偏移 count 开始,从 source 起复制 sourceOffset 字节到 target 在 targetOffset 。
source 和 target 可能是相同的。复制同一缓冲区内的重叠区域,作为如果源区域被复制到临时缓冲区,然后该缓冲区被复制到目标的情况。