Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I added a BinaryEncoding interface and an EncodingTest in the test code to run through several implementations of the interface. I tried to wrap the bennight encoder with the interface but I did not succeed (the check that the original matches the byte[] after base encode, UTF-8 encode, UTF-8 decode, base decode fails half the time). Maybe you can find the issue?
Base64 encoding will encode 4 chars from every 3 bytes, and theoretically with base128 that could be changed (improved?) to encode 8 chars with every 7 bytes, but I think we'd want to ensure that we don't end up encode an additional 8 chars for every overflow (ie. we wouldn't want to encode 8 chars from 1 byte).
Also with base-128 we'd have to ensure we preserve sort order which should be do-able. Just another thing to consider.