Snowberry.IO
1.0.5
.NET 6.0
dotnet add package Snowberry.IO --version 1.0.5
NuGet\Install-Package Snowberry.IO -Version 1.0.5
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Snowberry.IO" Version="1.0.5" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Snowberry.IO --version 1.0.5
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Snowberry.IO, 1.0.5"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Snowberry.IO as a Cake Addin
#addin nuget:?package=Snowberry.IO&version=1.0.5
// Install Snowberry.IO as a Cake Tool
#tool nuget:?package=Snowberry.IO&version=1.0.5
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
A binary reader and writer that supports different endian types.
Usage
Features
Reader
- Read different endian types for supported data types.
- Custom analyzer that can be used to analyze bytes when they were filled into a buffer.
- Read zero terminated strings (
ReadCString
). - Read sized zero terminated strings (
ReadSizedCString
). - Read size prefixed strings (
ReadString
). - Read lines (
ReadLine
). - Read custom
Sha1
type. - Read padding.
- Enable custom region view.
Writer
- Write different endian types for supported data types.
- Write zero terminated strings (
WriteCString
). - Write sized zero terminated string (
WriteSizedCString
). - Write custom
Sha1
type. - Write padding.
- Write lines (
WriteLine
). - Write size prefixed strings.
Custom
Sha1
type based on SHA-1.
Most used types
Name | Description |
---|---|
Reader | |
BaseEndianReader | The abstract base type that implements the IEndianReader interface. |
EndianStreamReader | Used for reading from streams, inherits the BaseEndianReader type. |
Writer | |
EndianStreamWriter | Used for writing into streams, inherits the BinaryWriter type and implements the IEndianWriter interface. |
Reader and writer
var stream = new MemoryStream();
using var writer = new EndianStreamWriter(stream, keepStreamOpen: true);
writer.Write(10, EndianType.BIG)
.Write(20L, EndianType.BIG)
.Write(30F, EndianType.BIG)
.Write(40u, EndianType.BIG)
.Write(50d, EndianType.BIG);
writer.BaseStream.Position = 0;
using var reader = new EndianStreamReader(stream);
_ = reader.ReadInt32(EndianType.BIG);
_ = reader.ReadLong(EndianType.BIG);
_ = reader.ReadFloat(EndianType.BIG);
_ = reader.ReadUInt32(EndianType.BIG);
_ = reader.ReadDouble(EndianType.BIG);
Custom analyzer
The Analyzer
abstract type can be inherited and used to monitor each buffer fill operation.
This is useful if a binary file is or has encrypted content.
Endian converter
The BinaryEndianConverter
type can be used to convert data in a Span<byte>
to all supported data types and also accepts an offset.
var buffer = new byte[] { ... };
int offset = ...;
var endianType = EndianType.BIG;
_ = BinaryEndianConverter.ToLong(buffer, endianType);
_ = BinaryEndianConverter.ToLong(buffer, offset, endianType);
Supported data types
Type | Endian type(s) |
---|---|
Int8 | - |
UInt8 | - |
Int16 | Little, Big |
UInt16 | Little, Big |
Int32 | Little, Big |
UInt32 | Little, Big |
Int64 | Little, Big |
UInt64 | Little, Big |
Float | Little, Big |
Double | Little, Big |
Guid | Little, Big |
Sha1 | Little |
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. |
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.
-
net6.0
- No dependencies.
-
net7.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.