buffer_read

此函数从给定缓冲区的当前 查找位置 读取给定类型的数据。

函数执行后,查找位置会提前读取的字节数。下一个 buffer_read 将在这个新位置完成,并将读取下一个数据字节。

由于该函数仅读取从缓冲区的当前 查找位置 开始的内容,因此您必须确保在调用该函数之前设置正确 - 否则,您将得到不正确的结果或根本不返回任何结果。

注意 您可以使用 buffer_peek 获取缓冲区中任意位置的值,而无需更改查找位置。

返回值取决于您正在读取的数据类型,可以是以下常量之一:

缓冲区数据类型常量
常量描述返回的数据类型
buffer_u8An unsigned, 8bit integer. This is a positive value from 0 to 255.int32
buffer_s8A signed, 8bit integer. This can be a positive or negative value from -128 to 127 (0 is classed as positive).int32
buffer_u16An unsigned, 16bit integer. This is a positive value from 0 - 65,535.int32
buffer_s16A signed, 16bit integer. This can be a positive or negative value from -32,768 to 32,767 (0 is classed as positive).int32
buffer_u32An unsigned, 32bit integer. This is a positive value from 0 to 4,294,967,295.int64
buffer_s32A signed, 32bit integer. This can be a positive or negative value from -2,147,483,648 to 2,147,483,647 (0 is classed as positive).int32
buffer_u64An unsigned 64bit integer. This is a positive value from 0 to 18,446,744,073,709,551,615.int64
buffer_f16A 16bit float. This can be a positive or negative value within the range of +/- 65504.number (real)
buffer_f32A 32bit float. This can be a positive or negative value within the range of +/-16777216.number (real)
buffer_f64A 64bit float.number (real)
buffer_boolA boolean value, can only be either 1 or 0 (true or false). It is stored in a single byte (8bit)int32
buffer_stringA string of any size, including a final null terminating characterstring
buffer_textA string of any size, without the final null terminating characterstring

如果函数成功,它将返回给定类型的值,但如果失败,则会导致 运行器错误

注意 对于正在读取的数据使用错误的数据类型将导致返回错误的值。

注意 在 HTML5 上读取 buffer_s32buffer_u32 会返回 Real 形式的值,该值是 64 位双精度值,就像 int32 一样该平台不支持。

 

语法:

buffer_read(buffer, type)

参数类型描述
bufferBuffer要读取的缓冲区。
type缓冲区数据类型常量要从缓冲区读取的数据类型 (请参阅上面的常量列表)。

 

返回:

Real, Boolean or String

 

例子:

buffer = buffer_create(10240, buffer_grow, 1);

// buffer_seek(buffer, buffer_seek_start, 0);
buffer_write(buffer, buffer_string, "Hello World");

buffer_seek(buffer, buffer_seek_start, 0);
result = buffer_read(buffer, buffer_string);

show_debug_message("Result = " + result);

上面的代码创建一个缓冲区,向其中写入一个字符串并将其读回。

首先,使用 buffer_create 创建一个初始大小为 10240 字节的新增长缓冲区。此时,您可以显式调用 buffer_seek 将查找位置设置为 0,但这不是必需的,因为新创建的缓冲区的查找位置为 0。接下来是字符串 "Hello World" 通过调用 buffer_write 将 } 写入缓冲区。这会将查找位置提前 12 个字节:字符串字符前移 11 个字节,后跟最后一个空字节。之后,从缓冲区读回字符串。要读取正确的数据,首先通过调用 buffer_seek 将查找位置设置回 0。然后使用 buffer_read 将数据读入变量 result,并在调试消息中显示。