此函数从给定缓冲区的当前 查找位置 读取给定类型的数据。
函数执行后,查找位置会提前读取的字节数。下一个 buffer_read 将在这个新位置完成,并将读取下一个数据字节。
由于该函数仅读取从缓冲区的当前 查找位置 开始的内容,因此您必须确保在调用该函数之前设置正确 - 否则,您将得到不正确的结果或根本不返回任何结果。
注意 您可以使用 buffer_peek 获取缓冲区中任意位置的值,而无需更改查找位置。
返回值取决于您正在读取的数据类型,可以是以下常量之一:
常量 | 描述 | 返回的数据类型 |
---|---|---|
buffer_u8 | An unsigned, 8bit integer. This is a positive value from 0 to 255. | int32 |
buffer_s8 | A signed, 8bit integer. This can be a positive or negative value from -128 to 127 (0 is classed as positive). | int32 |
buffer_u16 | An unsigned, 16bit integer. This is a positive value from 0 - 65,535. | int32 |
buffer_s16 | A signed, 16bit integer. This can be a positive or negative value from -32,768 to 32,767 (0 is classed as positive). | int32 |
buffer_u32 | An unsigned, 32bit integer. This is a positive value from 0 to 4,294,967,295. | int64 |
buffer_s32 | A 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_u64 | An unsigned 64bit integer. This is a positive value from 0 to 18,446,744,073,709,551,615. | int64 |
buffer_f16 | A 16bit float. This can be a positive or negative value within the range of +/- 65504. | number (real) |
buffer_f32 | A 32bit float. This can be a positive or negative value within the range of +/-16777216. | number (real) |
buffer_f64 | A 64bit float. | number (real) |
buffer_bool | A boolean value, can only be either 1 or 0 (true or false). It is stored in a single byte (8bit) | int32 |
buffer_string | A string of any size, including a final null terminating character | string |
buffer_text | A string of any size, without the final null terminating character | string |
如果函数成功,它将返回给定类型的值,但如果失败,则会导致 运行器错误 。
注意 对于正在读取的数据使用错误的数据类型将导致返回错误的值。
注意 在 HTML5 上读取 buffer_s32 或 buffer_u32 会返回 Real 形式的值,该值是 64 位双精度值,就像 int32 一样该平台不支持。
buffer_read(buffer, type)
参数 | 类型 | 描述 |
---|---|---|
buffer | Buffer | 要读取的缓冲区。 |
type | 缓冲区数据类型常量 | 要从缓冲区读取的数据类型 (请参阅上面的常量列表)。 |
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,并在调试消息中显示。