Commit aa911b43 authored by Ray Koopa's avatar Ray Koopa

Include new Syroot.BinaryData.Memory library and update text.

parent 83178a43
# BinaryData
When parsing or storing data in binary file formats, the functionality offered by the default .NET `BinaryReader` and
`BinaryWriter` classes is often insufficient. It lacks support for a different byte order than the system one, and
cannot parse specific string or date formats (most prominently, 0-terminated strings instead of the default
variable-length prefixed .NET strings).
When parsing or storing data of binary file formats or protocols, the functionality offered by the default .NET
`BinaryReader` and `BinaryWriter` classes is often insufficient. It lacks support for a different byte order than
the system one, and cannot parse specific string or date formats (most prominently, 0-terminated strings instead of the
default variable-length prefixed .NET strings).
Further, navigating in binary files is slightly tedious when it is required to skip to another chunk in the file and
then navigate back. Also, aligning to specific block sizes might be a common task.
The `Syroot.BinaryData` NuGet package adds all this and more functionality by offering a large set of extension methods
for the `Stream` class of .NET 4.5 and .NET Standard 2.0. `BinaryDataReader` and `BinaryDataWriter` classes are
provided, usable like the default .NET `BinaryReader` and `BinaryWriter` so that new functionality can be added almost
instantly to existing projects.
The `Syroot.BinaryData` library adds all this and more functionality by offering a large set of extension methods to
`Stream` instances. A `BinaryStream` class is provided, usable like a combination of the default .NET
`BinaryReader` and `BinaryWriter` classes, so that new functionality can be added almost instantly to existing
projects.
The `Syroot.BinaryData.Serialization` package can serialize and deserialize complete class hierarchies without any
The upcoming `Syroot.BinaryData.Memory` library can work directly and performantly with in-memory data thanks to the
new .NET `Span<T>` functionality, without the need for `Stream` instances anymore.
The `Syroot.BinaryData.Serialization` library can serialize and deserialize complete class hierarchies without any
further code required.
## Installation
The library is available in the following NuGet packages:
The libraries are available as NuGet packages:
- [Syroot.BinaryData](https://www.nuget.org/packages/Syroot.BinaryData) - Core functionality
- [Syroot.BinaryData.Serialization](https://www.nuget.org/packages/Syroot.BinaryData.Serialization) - Serialization functionality (adds the core package dependency)
- Syroot.BinaryData.Memory - Span functionality (currently experimental, not yet on NuGet)
- [Syroot.BinaryData.Serialization](https://www.nuget.org/packages/Syroot.BinaryData.Serialization) - Serialization
functionality (adds the core package dependency)
If you want to compile the libraries yourself, Visual Studio 2017 with the 15.7 update is required, as the library uses
the latest C# 7.3 features not available in earlier versions.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment