pro_binary 2.0.0 pro_binary: ^2.0.0 copied to clipboard
Efficient binary serialization library for Dart. Encodes and decodes various data types.
pro_binary - Binary Read/Write Library #
This library provides efficient binary reading and writing capabilities in Dart. It supports various data types and endianness, making it ideal for low-level data manipulation and network protocols.
Features #
- Read and write operations for various data types (e.g., int8, uint8, int16, uint16, int32, uint32, int64, uint64, float32, float64).
- Support for both big-endian and little-endian formats.
- Efficient memory management with dynamic buffer resizing.
Installation #
Add this to your package's pubspec.yaml
file:
dependencies:
pro_binary: ^2.0.0
Then, run pub get
to install the package.
Usage #
Writing Binary Data #
import 'package:pro_binary/pro_binary.dart';
void main() {
final writer = BinaryWriter()
..writeUint8(42)
..writeInt8(-42)
..writeUint16(65535, Endian.little)
..writeInt16(-32768, Endian.little)
..writeUint32(4294967295, Endian.little)
..writeInt32(-2147483648, Endian.little)
..writeUint64(9223372036854775807, Endian.little)
..writeInt64(-9223372036854775808, Endian.little)
..writeFloat32(3.14, Endian.little)
..writeFloat64(3.141592653589793, Endian.little)
..writeBytes([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100, 200, 255])
..writeString('Hello, World!');
final bytes = writer.takeBytes();
print(bytes);
}
Reading Binary Data #
import 'package:pro_binary/pro_binary.dart';
void main() {
final buffer = Uint8List.fromList([
42, 214, 255, 255, 0, 128, 255, 255, 255, 255, 0, 0, 0, 128,
255, 255, 255, 255, 255, 255, 255, 127, 0, 0, 0, 0, 0, 0, 0, 128,
195, 245, 72, 64, 24, 45, 68, 84, 251, 33, 9, 64,
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100, 200, 255, 72,
72, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100, 33
]);
final reader = BinaryReader(buffer);
final uint8 = reader.readUint8();
final int8 = reader.readInt8();
final uint16 = reader.readUint16(Endian.little);
final int16 = reader.readInt16(Endian.little);
final uint32 = reader.readUint32(Endian.little);
final int32 = reader.readInt32(Endian.little);
final uint64 = reader.readUint64(Endian.little);
final int64 = reader.readInt64(Endian.little);
final float32 = reader.readFloat32(Endian.little);
final float64 = reader.readFloat64(Endian.little);
final bytes = reader.readBytes(13);
final string = reader.readString(13);
print([uint8, int8, uint16, int16, uint32, int32, uint64, int64, float32, float64, bytes, string]);
}
Running Tests #
To run the tests, use the following command:
dart test
This will execute all tests in the test
directory and provide a summary of the results.
Contributing #
Feel free to open issues or submit pull requests on GitHub. Contributions are always welcome!
License #
This project is licensed under the MIT License. See the LICENSE file for more details.