BinaryBuffers 5.0.0
See the version list below for details.
dotnet add package BinaryBuffers --version 5.0.0
NuGet\Install-Package BinaryBuffers -Version 5.0.0
<PackageReference Include="BinaryBuffers" Version="5.0.0" />
<PackageVersion Include="BinaryBuffers" Version="5.0.0" />
<PackageReference Include="BinaryBuffers" />
paket add BinaryBuffers --version 5.0.0
#r "nuget: BinaryBuffers, 5.0.0"
#:package BinaryBuffers@5.0.0
#addin nuget:?package=BinaryBuffers&version=5.0.0
#tool nuget:?package=BinaryBuffers&version=5.0.0
BinaryBuffers

BinaryBuffers offers a highly performant implementation of BinaryReader and BinaryWriter, working directly on a byte array or ReadOnlyMemory<byte>, thus eliminating the need for an intermediate Stream object.
How to use
The library provides three types:
BinaryBufferReader— reads primitive data types from abyte[].BinaryBufferWriter— writes primitive data types to abyte[].BinaryBufferMemoryReader— reads primitive data types from aReadOnlyMemory<byte>.
// Provide a buffer to the reader/writer
var buffer = new byte[100];
// Write to the buffer
var writer = new BinaryBufferWriter(buffer);
writer.Write(2026);
writer.Write(8.11);
// Read from the buffer
var reader = new BinaryBufferReader(buffer);
var year = reader.ReadInt32();
var time = reader.ReadDouble();
Reading from a ReadOnlyMemory<byte>
When your data lives in a ReadOnlyMemory<byte>, use BinaryBufferMemoryReader:
ReadOnlyMemory<byte> memory = buffer;
var reader = new BinaryBufferMemoryReader(memory);
var year = reader.ReadInt32();
var time = reader.ReadDouble();
Constructor overloads
BinaryBufferReader and BinaryBufferWriter can both be constrained to a sub-region of the underlying array by supplying an offset and length:
// Read/write within the boundaries [offset, offset + length)
var reader = new BinaryBufferReader(buffer, offset: 10, length: 40);
var writer = new BinaryBufferWriter(buffer, offset: 10, length: 40);
BinaryBufferReader additionally accepts an ArraySegment<byte>, which carries its own offset and count:
var segment = new ArraySegment<byte>(buffer, 10, 40);
var reader = new BinaryBufferReader(segment);
BinaryBufferMemoryReader is constructed from a ReadOnlyMemory<byte>; slice the memory beforehand to read from a sub-region:
var reader = new BinaryBufferMemoryReader(memory.Slice(10, 40));
Benchmarks
Benchmarks show an average of 80% improvement in reading and 84% in writing.
Performance tests were executed using .NET 10 running on a machine with a 16-core CPU.
BinaryBufferReader
| Method | Mean | Error | StdDev | Ratio |
|---|---|---|---|---|
BinaryReader_ReadInt |
16.633 ms | 0.0406 ms | 0.0380 ms | baseline |
BufferReader_ReadInt |
3.607 ms | 0.0020 ms | 0.0019 ms | -78% |
BinaryReader_ReadDecimal |
14.333 ms | 0.0129 ms | 0.0121 ms | baseline |
BufferReader_ReadDecimal |
2.966 ms | 0.0318 ms | 0.0297 ms | -79% |
BinaryReader_ReadFloat |
11.666 ms | 0.0177 ms | 0.0166 ms | baseline |
BufferReader_ReadFloat |
2.012 ms | 0.0011 ms | 0.0011 ms | -83% |
BinaryBufferWriter
| Method | Mean | Error | StdDev | Ratio |
|---|---|---|---|---|
BinaryWriter_WriteInt |
39.373 ms | 0.0547 ms | 0.0511 ms | baseline |
BufferWriter_WriteInt |
5.602 ms | 0.0375 ms | 0.0350 ms | -86% |
BinaryWriter_WriteDecimal |
27.106 ms | 0.0171 ms | 0.0160 ms | baseline |
BufferWriter_WriteDecimal |
4.421 ms | 0.0058 ms | 0.0052 ms | -84% |
BinaryWriter_WriteFloat |
20.406 ms | 0.0205 ms | 0.0192 ms | baseline |
BufferWriter_WriteFloat |
3.379 ms | 0.0083 ms | 0.0078 ms | -83% |
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on BinaryBuffers:
| Package | Downloads |
|---|---|
|
LiteCDF
A high performance compound document format (CDF) reader. |
GitHub repositories
This package is not used by any popular GitHub repositories.