Skip to content

BitBuffer

Nak edited this page Sep 11, 2022 · 20 revisions

BitBuffers are written in pure Lua, similar to file-objects and store their data in a 32-bit number-array. They offer up to 80x the speed of regular file I/O operations, supports non-byte integers, Float, Double, has multiple additional features and can read/write at the same time.

Returns Functions Description
BitBuffer NikNaks.BitBuffer( String/Table data, Bool? little_endian ) Creates a new BitBuffer.
BitBuffer NikNaks.BitBuffer.OpenFile( String fileName, String? gamePath, Bool? lzma, Bool? little_endian ) Same as file.Open, but returns it as a bitbuffer. little_endian is true by default.
Number NikNaks.BitBuffer.StringToInt( String str ) Takes a string of 1-4 charectors and converts it into a Little-Endian int
String NikNaks.BitBuffer.IntToString( Number int ) Takes an Little-Endian number and converts it into a 4 char-string

Bitbuffer Bits:

Returns Functions Description
BitBuffer:WriteUInt( Number int,Number bits ) Writes an unsigned int
Number BitBuffer:ReadUInt( Number bits ) Reads an unsigned int
BitBuffer:WriteInt( Number int,Number bits ) Writes a signed int
Number BitBuffer:ReadInt( Number bits ) Reads a signed int

Bitbuffer Integers:

Returns Functions Description
BitBuffer:WriteLong( Number num ) Writes a 4 byte number ( -2147483648 - 2147483647 )
Number BitBuffer:ReadLong() Reads a 4 byte number ( -2147483648 - 2147483647 )
BitBuffer:WriteShort( Number num ) Writes a 2 byte number ( -32768 - 32767 )
Number BitBuffer:ReadShort() Reads an 2 byte number ( -32768 - 32767 )
BitBuffer:WriteSignedByte( Number byte ) Writes a signed byte ( -128 - 127 )
Number BitBuffer:ReadSignedByte() Writes a signed byte ( -128 - 127 )
BitBuffer:WriteULong( Number num ) Writes an unsigned 4 byte number ( 0 - 4294967295 )
Number BitBuffer:ReadULong() Reads an unsigned 4 byte number ( 0 - 4294967295 )
BitBuffer:WriteUShort( Number num ) Writes an unsigned 2 byte number ( 0 - 65535 )
Number BitBuffer:ReadUShort() Reads an unsigned 2 byte number ( 0 - 65535 )
BitBuffer:WriteByte( Number byte ) Writes a byte ( 0 - 255 )
Number BitBuffer:ReadByte() Reads a byte ( 0 - 255 )
BitBuffer:WriteNibble( Number num ) Writes a 4 bit unsigned number ( 0 - 15 )
Number BitBuffer:ReadNibble() Reads a 4 bit unsigned number ( 0 - 15 )
BitBuffer:WriteSnort( Number num ) Writes a 2 bit unsigned number ( 0 - 3 )
Number BitBuffer:ReadSnort() Reads a 2 bit unsigned number ( 0 - 3 )

BitBuffer Floats/Doubles:

Returns Functions Description
BitBuffer:WriteFloat( Number num ) Writes an IEEE 754 little-endian float
Number BitBuffer:ReadFloat() Reads an IEEE 754 little-endian float
BitBuffer:WriteDouble( Number num ) Writes an IEEE 754 little-endian double
Number BitBuffer:ReadDouble() Reads an IEEE 754 little-endian double

BitBuffer Types:

Returns Functions Description
BitBuffer:WriteBoolean( Bool bool ) Writes a boolean
Bool BitBuffer:ReadBoolean() Reads a boolean
BitBuffer:WriteVector( Vector vector ) Writes a vector
Vector BitBuffer:ReadVector() Reads a vector
BitBuffer:WriteString( String str ) Writes a string. Max string length: 65535
String BitBuffer:ReadString() Reads a string. Max string length: 65535
BitBuffer:WriteAngle( Angle angle ) Writes an angle
Angle BitBuffer:ReadAngle() Reads an angle
BitBuffer:WriteColor( Color color ) Writes a 32bit color
Color BitBuffer:ReadColor() Reads a 32bit color
BitBuffer:WriteTable( Table tab ) Writes a table
Table BitBuffer:ReadTable() Reads a table
BitBuffer:WriteType( [any] obj ) Writes a type using a byte as TYPE_ID.
[any] BitBuffer:ReadType() Reads a type using a byte as TYPE_ID.
BitBuffer:WriteStringNull( String str ) Writes a string using a nullbyte at the end. Note: Will remove all nullbytes given.
String BitBuffer:ReadStringNull( Number? maxLength ) Reads a string using a nullbyte at the end. Note: ReadStringNull is a bit slower than ReadString.

Nik Naks Wiki


Features:

Clone this wiki locally