0 purchases
bits
Write data in bits for more control over the data you write. This is useful for writing binary data.
Features #
Bit Buffers #
You can create a BitBuffer from / export to the following formats
UInt8List
ByteBuffer
BytesBuilder
ByteData
Base64 Strings
Compressed Base64 Strings (see threshold package)
Data Types #
Write VarUInts (8, 16, 32, 64)
2 bits for the length of the VarUInt
8-64 bits for the value
10-70 bits total
Write VarInts (8, 16, 32, 64)
1 bit for the sign
2 bits for the length of the VarInt
8-64 bits for the value
11-71 bits total
Write VarDoubles (8, 16, 32, 64) with variable precision
1 bit for the sign
2 bits for the length of the VarDouble
1-4 bits for the precision (0-15 digits of max precision)
8-64 bits for the value
12-75 bits total
Write VarUIntLists (8, 16, 32, 64)
10-70 bits for the length of the list
2 bits for the length of the biggest VarUInt in the list
8-64 bits per entry
12-72 bits for the header
Write VarIntLists (8, 16, 32, 64)
10-70 bits for the length of the list
2 bits for the length of the biggest VarInt in the list
9-65 bits per entry (1 bit for the sign)
12-72 bits for the header
Usage #
import 'package:bits/bits.dart';
void main()
{
// Create a buffer
BitBuffer buffer = BitBuffer();
// Write Data
buffer.writeVarUInt(12); // Positive only (unsigned)
buffer.writeVarInt(-12); // Positive and negative
buffer.writeVarDouble(12.34); // Default precision is 8
buffer.writeVarDouble(12.34, precision: 2); // 2 digits of precision
buffer.writeVarUIntList([1, 2, 3, 4, 5]); // List of VarUInts
buffer.writeVarIntList([-1, 2, -3, 4, -5]); // List of VarInts
buffer.writeVarDoubleList([1.23, 4.56, 7.89], maxPrecision: 2); // List of VarDoubles
// You can also write bits directly
buffer.writeBits(0b10, 2); // Write 2 in 2 bits
buffer.writeBits(0b101, 3); // Write 5 in 3 bits
buffer.writeBits(28, buffer.getBitsNeeded(32)); // Write 28 in the minimum bits required to handle a maximum of 32.
// Read Data (in the same order)
print(buffer.readVarUInt()); // 12
print(buffer.readVarInt()); // -12
print(buffer.readVarDouble()); // 12.34
print(buffer.readVarDouble(precision: 2)); // 12.34
print(buffer.readVarUIntList()); // [1, 2, 3, 4, 5]
print(buffer.readVarIntList()); // [-1, 2, -3, 4, -5]
print(buffer.readVarDoubleList(maxPrecision: 2)); // [1.23, 4.56, 7.89]
// You can also read bits directly
print(buffer.readBits(2)); // 2
print(buffer.readBits(3)); // 5
print(buffer.readBits(buffer.getBitsNeeded(32))); // 28
}
copied to clipboard
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.