deniszykov.BaseN
3.1.2
dotnet add package deniszykov.BaseN --version 3.1.2
NuGet\Install-Package deniszykov.BaseN -Version 3.1.2
<PackageReference Include="deniszykov.BaseN" Version="3.1.2" />
paket add deniszykov.BaseN --version 3.1.2
#r "nuget: deniszykov.BaseN, 3.1.2"
// Install deniszykov.BaseN as a Cake Addin
#addin nuget:?package=deniszykov.BaseN&version=3.1.2
// Install deniszykov.BaseN as a Cake Tool
#tool nuget:?package=deniszykov.BaseN&version=3.1.2
Introduction
This is BaseN encoding library. It provides simple API for converting between binary and BaseN encoded text data.
Also there is an implementation of System.Text.Encoding
which provides complex streaming API with it's Convert
methods.
(Un)desired feature of this library, any invalid symbols (e.g. line breaks) during decoding are ignored.
Supported encoding alphabets are Base16
aka Hex
, Base32
, ZBase32
, Base64
, Base64
Url-safe.
Installation
Install-Package deniszykov.BaseN
Usage
Utility classes
Base64Convert.ToString(bytes);
Base64Convert.ToCharArray(bytes);
Base64Convert.ToBytes(string); // (+ 6 overloads)
// also
// Base64UrlConvert
// Base32Convert
// ZBase32Convert
// HexConvert
Example
using deniszykov.BaseN;
var bytes = Base64Convert.ToBytes("eg==");
// bytes[0] -> 122
Using BaseNEncoding class
using deniszykov.BaseN;
var encoding = BaseNEncoding.Base64;
var input = "eg==".ToCharArray();
var output = new byte[1024];
var decoder = encoding.GetDecoder();
decoder.Convert(input, 0, input.Length, output, 0, output.Length, flush: true, out var inputUsed, out var outputUsed, out var completed);
// completed -> true
// inputUsed -> 4
// outputUsed -> 1
// output[0] -> 122
There is overload of Convert
accepting pointers and Span<T>
's.
Using custom alphabet
using deniszykov.BaseN;
var binHex4Alphabet = new BaseNAlphabet("!\"#$%&'()*+,-012345689@ABCDEFGHIJKLMNPQRSTUVXYZ[`abcdefhijklmpqr".ToCharArray());
var encoding = new BaseNEncoding(binHex4Alphabet, "mac-binhex40");
Performance
Benchmark Code
Benchmark Result
| Method | Mean | Ratio | Gen 0 | Allocated |
|--------------------------------------- |----------:|------:|---------:|----------:|
| System_Memory_Base64ToString | 15.57 ms | 0.32 | 125.0000 | 26.67 MB |
| BaseN_BaseNDecoder_Convert | 29.00 ms | 0.59 | 125.0000 | 26.67 MB |
| BaseN_Base64Convert_ToString | 39.60 ms | 0.80 | 230.7692 | 53.33 MB |
| BaseN_Base32Convert_ToString | 46.40 ms | 0.94 | 181.8182 | 64 MB |
| System_Convert_ToBase64String | 49.21 ms | 1.00 | 181.8182 | 53.33 MB |
| Wiry_Base32Encoding_Standard_GetString | 96.24 ms | 1.96 | 500.0000 | 128 MB |
| SimpleBase_Base32_Rfc4648_Encode | 99.23 ms | 2.02 | 166.6667 | 64 MB |
| Albireo_Base32_Encode | 150.08 ms | 3.04 | 500.0000 | 128 MB |
Product | Versions |
---|---|
.NET | net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows net7.0 net7.0-android net7.0-ios net7.0-maccatalyst net7.0-macos net7.0-tvos net7.0-windows |
.NET Core | netcoreapp1.0 netcoreapp1.1 netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1 |
.NET Standard | netstandard1.6 netstandard2.0 netstandard2.1 |
.NET Framework | net45 net451 net452 net46 net461 net462 net463 net47 net471 net472 net48 net481 |
MonoAndroid | monoandroid |
MonoMac | monomac |
MonoTouch | monotouch |
Tizen | tizen30 tizen40 tizen60 |
Xamarin.iOS | xamarinios |
Xamarin.Mac | xamarinmac |
Xamarin.TVOS | xamarintvos |
Xamarin.WatchOS | xamarinwatchos |
-
.NETCoreApp 2.1
- No dependencies.
-
.NETFramework 4.5
- No dependencies.
-
.NETFramework 4.6.1
- No dependencies.
-
.NETStandard 1.6
- NETStandard.Library (>= 1.6.1)
-
.NETStandard 2.0
- No dependencies.
NuGet packages (2)
Showing the top 2 NuGet packages that depend on deniszykov.BaseN:
Package | Downloads |
---|---|
Pluto
Pluto is an application server |
|
Pluto.Formatting
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.