Skip to content

buffer

The buffer module provides low-level contiguous byte arrays with read and write operations for unsigned 8-bit integers, 32-bit signed integers, and 64-bit IEEE-754 floating point numbers.


FunctionSignatureReturn TypeDescription
buffer.allocbuffer.alloc(size)BufferAllocates a zeroed byte buffer of the specified size in bytes.
buffer.from_stringbuffer.from_string(str)BufferCreates a buffer initialized with the UTF-8 bytes of a string.
buffer.to_stringbuffer.to_string(buf)stringConverts buffer bytes into a string.
buffer.sizebuffer.size(buf)numberReturns total buffer size in bytes (alias: buffer.len).
buffer.get_u8buffer.get_u8(buf, offset)numberReads a single unsigned 8-bit integer (0-255).
buffer.set_u8buffer.set_u8(buf, offset, val)voidWrites a single unsigned 8-bit integer (0-255).
buffer.get_i32buffer.get_i32(buf, offset)numberReads a 32-bit signed integer (little-endian).
buffer.set_i32buffer.set_i32(buf, offset, val)voidWrites a 32-bit signed integer (little-endian).
buffer.get_f64buffer.get_f64(buf, offset)numberReads a 64-bit double precision float.
buffer.set_f64buffer.set_f64(buf, offset, val)voidWrites a 64-bit double precision float.

var buf = buffer.alloc(32)
buffer.set_u8(buf, 0, 0x52)
buffer.set_u8(buf, 1, 0x51)
var b0 = buffer.get_u8(buf, 0)
var b1 = buffer.get_u8(buf, 1)
print(b0)
print(b1)
var packet = buffer.alloc(16)
buffer.set_i32(packet, 0, 1001)
buffer.set_f64(packet, 4, 3.14159265)
var packetId = buffer.get_i32(packet, 0)
var val = buffer.get_f64(packet, 4)
print("Packet ID: " + packetId)
print("Value: " + val)

Converting Strings and Interfacing with FFI

Section titled “Converting Strings and Interfacing with FFI”
var textBuf = buffer.from_string("Hello World")
var str = buffer.to_string(textBuf)
print(str)
var lib = ffi.load("kernel32.dll")
ffi.close(lib)