Changed interface names from Encoder to Coder to signify encoding and
decoding functionality better.
Removed obsolete methods.
Simple (aka allocating) versions of Decode() will now return byte[]'s instead of Span<byte>'s for correct
ownership semantics. It's even possible that some copying may be avoided in certain scenarios.
Base16.TryDecode() doesn't throw on invalid input, but returns false instead.
Base32.Decode() throws separate exceptions for encountered failures.
Added Base58.Bitcoin.EncodeCheck() and Base58.Bitcoin.TryDecodeCheck() methods.
Added Base58.Bitcoin.EncodeCb58() and Base58.Bitcoin.TryDecodeCb58() methods.
Improvements
Added more buffer overflow detection to Base32 coder
Removed all unsafe code. New Span-based optimizations make the code come close to unsafe perf.
Removed slow and hard to read optimizations like bit shift operations for multiplication and division
where compiler almost always does a better job of optimizing.
Fixes
Fixed output buffer was too small error for certain Base58 cases.
Avoid redundant memory copy operations
3.1.0
Improvements
Added FileCoin flavor to Base32 (contributed by @farukterzioglu).
Upgraded test and benchmark projects to .NET Core 3.1 (LTS).
3.0.2
Fixes
Fixed output buffer was too small error for certain Base58 cases.
Avoid redundant memory copy operations.
Introduce an additional buffer overrun check for Base32.
3.0.1
Fixes
Fixed padding being ignored by Base32, thanks to @skwasjer!
3.0.0
Breaking changes
This version only supports .NET Standard 2.1 (.NET Core 3.0) and up, because I started using nullable annotations and Span/Range constructs in the code. It's time to move to the future, folks!
Base16 encoding/decoding methods have been moved to Base16.UpperCase and Base16.LowerCase respectively.
Changed the static version of Base16.Decode() to receive a string as a parameter to avoid signature conflicts. (It's probably more practical this way)
Removed string/byte[] overloads for Encode functions as they are redundant with .NET Core 3.0. Only Base16.Decode remained as a string due to function signature conflicts.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps SimpleBase from 1.3.1 to 4.0.0.
Release notes
Sourced from SimpleBase's releases.
... (truncated)
Commits
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)