Buffer
The buffer library provides safe binary serialization and deserialization with bounds checking and clean error handling.
- class st.buf.Buf
- init(buffer)
Initialize a buffer instance.
- Parameters
buffer (
str
) – initial buffer contents
- size()
Return the size of the internal buffer.
- Returns
size in bytes
- Return type
number
- tell()
Return the current 0-based byte position of the buffer.
- Returns
0-based position in bytes
- Return type
number
- bit_tell()
Return the current 0-based bit position of the buffer, modulus 8.
- Returns
0-based bit position in bits, modulus 8.
- Return type
number
- remain()
Return the number of bytes remaining in the buffer.
- Returns
buffer’s remaining bytes
- Return type
number
- bits_remain()
Return the number of bits remaining in the buffer.
- Returns
buffer’s remaining bytes
- Return type
number
- seek(n)
Seek buffer by n bytes.
- Parameters
n (
number
) – number bytes to seek
- bit_seek(n)
Seek buffer by n bits.
- Parameters
n (
number
) – number bytes to seek
- class st.buf.Writer: st.buf.Buf
- init()
Initialize buf writer instance.
- pretty_print()
Get a string representation of the Writer
- Returns
a string representation of the Writer
- Return type
str
- write_int(value, width, signed, little_endain)
Serialize and write an integer value to the internal buffer.
- Parameters
value (
number
) – value to writewidth (
number
) – integer width in bytessigned (
boolean
) – true if signed, false if unsignedlittle_endain (
boolean
) – true if little endian, false if big endian
- write_u8(value)
Write a Uint8 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_le_u16(value)
Write a little-endian Uint16 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_be_u16(value)
Write a big-endian Uint16 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_le_u24(value)
Write a little-endian Uint24 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_be_u24(value)
Write a big-endian Uint24 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_le_u32(value)
Write a little-endian Uint32 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_be_u32(value)
Write a big-endian Uint32 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_le_u40(value)
Write a little-endian Uint40 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_be_u40(value)
Write a big-endian Uint40 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_le_u48(value)
Write a little-endian Uint48 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_be_u48(value)
Write a big-endian Uint48 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_le_u56(value)
Write a little-endian Uint56 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_be_u56(value)
Write a big-endian Uint56 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_i8(value)
Write an Int8 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_le_i16(value)
Write a little-endian Int16 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_be_i16(value)
Write a big-endian Int16 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_le_i24(value)
Write a little-endian Int24 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_be_i24(value)
Write a big-endian Int24 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_le_i32(value)
Write a little-endian Int32 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_be_i32(value)
Write a big-endian Int32 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_le_i40(value)
Write a little-endian Int40 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_be_i40(value)
Write a big-endian Int40 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_le_i48(value)
Write a little-endian Int48 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_be_i48(value)
Write a big-endian Int48 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_le_i56(value)
Write a little-endian Int56 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_be_i56(value)
Write a big-endian Int56 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_le_i64(value)
Write a little-endian Int64 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_be_i64(value)
Write a big-endian Int64 to the internal buffer.
- Parameters
value (
number
) – value to write
- write_bytes(data)
Write an arbitrary number of bytes to the internal buffer.
- Parameters
data (
str
) – data to write
- write_bool(value)
Write a boolean bit to the internal buffer.
- Parameters
value (
boolean
) – value to write
- write_bits(width, data)
Write a bit field to the internal buffer.
Bits are extracted from the passed value in little-endian order.
- Parameters
width (
number
) – bit field widthdata (
number
) – bit field
- class st.buf.Reader: st.buf.Buf
- init(buffer)
Initialize buf reader instance.
- Parameters
buffer (
str
) – buffer contents
- pretty_print()
Get a string representation of the Reader
- Returns
a string representation of the Reader
- Return type
str
- store(value, key, out)
Store a value at the specified key either in the internal parsed table or,
if passed, the specified ‘out’ table.
- Parameters
value (
any
) – value to storekey (
any
) – key at which to store value, or nil if storage is not desiredout (
table
) – table in which to store value, or nil if storage in the internal ‘parsed’ table is desired.
- read_int(width, signed, little_endian)
Read and deserialize an integer value from the internal buffer.
- Parameters
width (
number
) – integer width in bytessigned (
boolean
) – true if signed, false if unsignedlittle_endian (
boolean
) – true if little endian, false if big endian
- Returns
integer parsed from the internal buffer
- Return type
number
- read_u8()
Read a Uint8 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_le_u16()
Read a little-endian Uint16 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_be_u16()
Read a big-endian Uint16 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_le_u24()
Read a little-endian Uint24 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_be_u24()
Read a big-endian Uint24 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_le_u32()
Read a little-endian Uint32 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_be_u32()
Read a big-endian Uint32 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_le_u40()
Read a little-endian Uint40 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_be_u40()
Read a big-endian Uint40 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_le_u48()
Read a little-endian Uint48 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_be_u48()
Read a big-endian Uint48 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_le_u56()
Read a little-endian Uint56 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_be_u56()
Read a big-endian Uint56 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_i8()
Read an Int8 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_le_i16()
Read a little-endian Int16 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_be_i16()
Read a big-endian Int16 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_le_i24()
Read a little-endian Int24 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_be_i24()
Read a big-endian Int24 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_le_i32()
Read a little-endian Int32 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_be_i32()
Read a big-endian Int32 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_le_i40()
Read a little-endian Int40 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_be_i40()
Read a big-endian Int40 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_le_i48()
Read a little-endian Int48 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_be_i48()
Read a big-endian Int40 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_le_i56()
Read a little-endian Int56 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_be_i56()
Read a big-endian Int56 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_le_i64()
Read a little-endian Int64 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_be_i64()
Read a big-endian Int64 from the internal buffer.
- Returns
value read from the buffer
- Return type
number
- read_bytes(len)
Read an arbitrary number of bytes from the internal buffer.
- Parameters
len (
number
) – of bytes to read- Returns
data read from the buffer
- Return type
str
- read_bool()
Read a boolean bit from the internal buffer.
- Returns
true if the bit read is set, false if not
- Return type
boolean
- read_bits(len)
Read a bit field from the internal buffer.
Bit extractions are returned in little-endian order.
- Parameters
len (
number
) – of bits to read- Returns
numerical representation of the bit field.
- Return type
number
- peek_u8()
Peek a Uint8 from the internal buffer, but do not advance internal pointer.
- Returns
value read from the buffer
- Return type
number