STH1123.ReedSolomon
2.1.0
dotnet add package STH1123.ReedSolomon --version 2.1.0
NuGet\Install-Package STH1123.ReedSolomon -Version 2.1.0
<PackageReference Include="STH1123.ReedSolomon" Version="2.1.0" />
paket add STH1123.ReedSolomon --version 2.1.0
#r "nuget: STH1123.ReedSolomon, 2.1.0"
// Install STH1123.ReedSolomon as a Cake Addin
#addin nuget:?package=STH1123.ReedSolomon&version=2.1.0
// Install STH1123.ReedSolomon as a Cake Tool
#tool nuget:?package=STH1123.ReedSolomon&version=2.1.0
A .NET implementation of the Reed-Solomon algorithm, supporting error, erasure and errata correction.
Uses code from the Reed-Solomon component of the ZXing.Net project and code I've ported to C#, from the python code at Wikiversity.
Code examples
Create a representation of a Galois field:
GenericGF field = new GenericGF(285, 256, 0);
Reed-Solomon encoding:
Create an instance of the ReedSolomonEncoder
class, specifying the Galois field to use:
ReedSolomonEncoder rse = new ReedSolomonEncoder(field);
To encode the string "Hello World"
with 9 ecc symbols, 9 null-values must be appended to store the ecc symbols:
int[] data = new int[] { 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x57, 0x6F, 0x72, 0x6C, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
Call the Encode()
method of the ReedSolomonEncoder
class to encode data with Reed-Solomon:
rse.Encode(data, 9);
The data
variable now contains:
0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x57, 0x6F, 0x72, 0x6C, 0x64, 0x40, 0x86, 0x08, 0xD5, 0x2C, 0xAE, 0xB5, 0x8F, 0x83
Reed-Solomon decoding:
Previous data
variable with some errors:
data = new int[] { 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x57, 0x6F, 0x72, 0x6C, 0x64, 0x40, 0x86, 0x08, 0xD5, 0x2C, 0xAE, 0xB5, 0x8F, 0x83 };
Providing the locations of some erasures:
int[] erasures = new int[] { 0, 1, 2 };
Create an instance of the ReedSolomonDecoder
class, specifying the Galois field to use:
ReedSolomonDecoder rsd = new ReedSolomonDecoder(field);
Call the Decode()
method of the ReedSolomonDecoder
class to decode (correct) data with Reed-Solomon:
if (rsd.Decode(data, 9, erasures))
{
// Data corrected.
}
else
{
// Too many errors/erasures to correct.
}
The data
variable now contains:
0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x57, 0x6F, 0x72, 0x6C, 0x64, 0x40, 0x86, 0x08, 0xD5, 0x2C, 0xAE, 0xB5, 0x8F, 0x83
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.1 netstandard1.2 netstandard1.3 netstandard1.4 netstandard1.5 netstandard1.6 netstandard2.0 netstandard2.1 |
.NET Framework | net20 net35 net40 net403 net45 net451 net452 net46 net461 net462 net463 net47 net471 net472 net48 net481 |
MonoAndroid | monoandroid |
MonoMac | monomac |
MonoTouch | monotouch |
Tizen | tizen30 tizen40 tizen60 |
Universal Windows Platform | uap uap10.0 |
Windows Phone | wpa81 |
Windows Store | netcore netcore45 netcore451 |
Xamarin.iOS | xamarinios |
Xamarin.Mac | xamarinmac |
Xamarin.TVOS | xamarintvos |
Xamarin.WatchOS | xamarinwatchos |
-
.NETFramework 2.0
- No dependencies.
-
.NETFramework 4.0
- No dependencies.
-
.NETStandard 1.1
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on STH1123.ReedSolomon:
Package | Downloads |
---|---|
BrightChain.Engine
BrightChain: The Revolution(ary) Network |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.1.0 | 11,664 | 4/5/2020 |