Difference between revisions of "Buffer.readbits"
From GiderosMobile
| (One intermediate revision by the same user not shown) | |||
| Line 40: | Line 40: | ||
print(val1, val2) -- Output: 10 11 | print(val1, val2) -- Output: 10 11 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| + | |||
| + | '''Key Details''' | ||
| + | '''bitOffset''': The starting bit position (not byte). | ||
| + | '''bitCount''': Number of bits to read (0-32). | ||
| + | '''Behavior''': It treats the result as an unsigned integer. | ||
| + | '''Equivalents''': readbits(b, 0, 8) equals buffer.readu8(b, 0), readbits(b, 0, 16) equals buffer.readu16(b, 0). | ||
| + | '''Limits''': As of late 2025, readbits is used for packing small numbers within bytes or reading 24-bit integers. | ||
{{buffer_luau}} | {{buffer_luau}} | ||
Latest revision as of 13:45, 3 February 2026
Available since: Gideros 2026.1
Class: buffer_luau
Description
Reads a range of bitCount bits from the buffer, at specified offset bitOffset, into an unsigned integer.
(number) = buffer.readbits(b,bitOffset,bitCount)
bitCount must be in [0, 32] range.
Parameters
b: (buffer) the buffer
bitOffset: (number) offset from the beginning of the buffer memory, starting from 0
bitCount: (number) length to read
Return values
Returns (number) the bitCount bits from the buffer
Example
-- ! generated by AI !
-- Create a 4-byte buffer (32 bits)
local b = buffer.create(4)
-- Write a 24-bit value (e.g., 0xABCDEF) starting at bit 0
buffer.writebits(b, 0, 24, 0xABCDEF)
-- Read the 24 bits back
local value = buffer.readbits(b, 0, 24)
print(string.format("0x%X", value)) -- Output: 0xABCDEF
-- Example: Reading packed 4-bit values (nibbles)
buffer.writebits(b, 0, 4, 0xA) -- First 4 bits: 1010
buffer.writebits(b, 4, 4, 0xB) -- Next 4 bits: 1011
local val1 = buffer.readbits(b, 0, 4) -- Reads 0xA
local val2 = buffer.readbits(b, 4, 4) -- Reads 0xB
print(val1, val2) -- Output: 10 11
Key Details
bitOffset: The starting bit position (not byte). bitCount: Number of bits to read (0-32). Behavior: It treats the result as an unsigned integer. Equivalents: readbits(b, 0, 8) equals buffer.readu8(b, 0), readbits(b, 0, 16) equals buffer.readu16(b, 0). Limits: As of late 2025, readbits is used for packing small numbers within bytes or reading 24-bit integers.