Wiry.Base32
Base32 and ZBase32 encoding and decoding library.
Install / Use
/learn @wiry-net/Wiry.Base32README
Wiry.Base32
Base32 and ZBase32 encoding and decoding library.
.NET compatibility:
- .NET Framework (4.5+)
- .NET Core (netstandard 1.1+)
Installation
To install Wiry.Base32, run the following command in the Package Manager Console
PM> Install-Package Wiry.Base32
Usage example
using System;
using System.Linq;
using System.Text;
using Wiry.Base32;
namespace Base32ConsoleApp
{
public class Program
{
public static void Main()
{
// original text
string text = "Hello, World!";
Console.WriteLine($"Text: '{text}'");
byte[] inputBytes = Encoding.ASCII.GetBytes(text);
// Convert to RFC 4648 Base32 string
string base32 = Base32Encoding.Standard.GetString(inputBytes);
Console.WriteLine($"base32: '{base32}'");
// Convert to z-base-32 string
string zbase32 = Base32Encoding.ZBase32.GetString(inputBytes);
Console.WriteLine($"z-base-32: '{zbase32}'");
// Convert data back and check it
byte[] decodedBase32 = Base32Encoding.Standard.ToBytes(base32);
if (inputBytes.SequenceEqual(decodedBase32))
Console.WriteLine("Convert back from base32 successfully!");
byte[] decodedZBase32 = Base32Encoding.ZBase32.ToBytes(zbase32);
if (inputBytes.SequenceEqual(decodedZBase32))
Console.WriteLine("Convert back from z-base-32 successfully!");
}
}
}
Output:
Text: 'Hello, World!'
base32: 'JBSWY3DPFQQFO33SNRSCC==='
z-base-32: 'jb1sa5dxfoofq551pt1nn'
Convert back from base32 successfully!
Convert back from z-base-32 successfully!
Validation example
using System;
using Wiry.Base32;
namespace ValidateConsoleApp
{
class Program
{
static void Main()
{
var standard = Base32Encoding.Standard;
Console.WriteLine("S1) " + standard.Validate(null));
Console.WriteLine("S2) " + standard.Validate("MZXW6YQ="));
Console.WriteLine("S3) " + standard.Validate("MZ@W6YQ="));
Console.WriteLine("S4) " + standard.Validate("MZXW6YQ=="));
Console.WriteLine("S5) " + standard.Validate("========"));
var zbase = Base32Encoding.ZBase32;
Console.WriteLine("Z1) " + zbase.Validate(null));
Console.WriteLine("Z2) " + zbase.Validate("gr3doqbw8radnqb3go"));
Console.WriteLine("Z3) " + zbase.Validate("gr3doqbw8radnqb3goa"));
Console.WriteLine("Z4) " + zbase.Validate("gr3doqbw!radnqb3go"));
}
}
}
Output:
S1) InvalidArguments
S2) Ok
S3) InvalidCharacter
S4) InvalidLength
S5) InvalidPadding
Z1) InvalidArguments
Z2) Ok
Z3) InvalidLength
Z4) InvalidCharacter
Benchmarks
Test configuration: Win10 x64 @ Intel Core 2 Quad Q9550.
Test 1: 1000000 repeats with 64 bytes of data:
| Library (alphabetical order) | Encoding | Decoding | | ---------------------------- | -------- | -------- | | .NET Base64 (baseline) | 202 ms | 336 ms | | Albireo.Base32 v1.0.1 | 822 ms | 3627 ms | | Base3264-UrlEncoder v1.0.2 | 2839 ms | 43972 ms | | SimpleBase v1.3.1 | 480 ms | 673 ms | | WallF.BaseNEncodings v1.0.0 | 587 ms | 3342 ms | |Wiry.Base32 v1.1.1 |331 ms|388 ms |
Test 2: random data size from 0 to 100 bytes (500 sessions by 20000 repeats):


References
License
Copyright (c) Dmitry Razumikhin, 2016-2018.
Licensed under the MIT License.
Related Skills
node-connect
345.9kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
106.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
345.9kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
345.9kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
