Binary encoding with Base2048 in Rust.
Project description
Base 2048
When Base 64 is not enough
Allows up to 11 bits of data per unicode character as counted by social media and chat platforms such as Twitter and Discord.
Uses a limited charset within the Basic Multilingual Plane.
Based on, and uses a compatible encoding table with the Rust crate rust-base2048.
- Charset displayable on most locales and platforms
- No control sequences, punctuation, quotes, or RTL characters
Getting Started
pip install base2048
import base2048
base2048.encode(b'Hello!')
# => 'ϓțƘ໐µ'
base2048.decode('ϓțƘ໐µ')
# => b'Hello!'
Up to 2x less counted characters compared to Base 64
import zlib
import base64
import base2048
string = ('🐍 🦀' * 1000 + '🐕' * 1000).encode()
data = zlib.compress(string)
b64_data = base64.b64encode(data)
# => b'eJztxrEJACAQBLBVHNUFBBvr75zvRvgxBEkRSGqvkbozIiIiIiIiIiIiIiIiIiIiIiJf5wAAAABvNbM+EOk='
len(b64_data)
# => 84
b2048_data = base2048.encode(data)
# => 'ը྿Ԧҩ২ŀΏਬйཬΙāಽႩԷ࿋ႬॴŒǔ०яχσǑňॷβǑňॷβǑňॷβǯၰØØÀձӿօĴ༎'
len(b2048_data)
# => 46
unpacked = zlib.decompress(base2048.decode(b2048_data)).decode()
len(unpacked)
# => 4000
unpacked[2000:2002]
# => '🦀🐍'
Decode errors are provided with a character-position of failure
----> base2048.decode('༗ǥԢΝĒϧǰ༎ǥ')
DecodeError: Unexpected character 8: ['ǥ'] after termination sequence 7: ['༎']
- To catch the error, use either
base2048.DecodeError
or its base exception,ValueError
.
import base2048
try:
base2048.decode('🤔')
except base2048.DecodeError as e:
print(e)
License
The code in this project is released under the MIT License.
Related and prior works
Javascript - base2048
Rust - rust-base2048
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
File details
Details for the file base2048-0.1.3.tar.gz
.
File metadata
- Download URL: base2048-0.1.3.tar.gz
- Upload date:
- Size: 91.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/0.13.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51d9eeae723b8aa84d9721211ca3b62a20cb2b884efbf53b61b3c3a7c440969d |
|
MD5 | bb821f5ec1c2713352769bd34651daba |
|
BLAKE2b-256 | 00a52c630c47316f6bf0a2a0fc920f7b09f012bb53ee20baac6172ec3a030cdc |
File details
Details for the file base2048-0.1.3-cp37-abi3-win_amd64.whl
.
File metadata
- Download URL: base2048-0.1.3-cp37-abi3-win_amd64.whl
- Upload date:
- Size: 122.9 kB
- Tags: CPython 3.7+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/0.13.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d1aefd5ee3bee6a6999e38fc01e6ec9cf788d72a5df28b54d8656e51b4a24a9b |
|
MD5 | cfa7ffe9926aa2de7ac2a62845820456 |
|
BLAKE2b-256 | 346fe234bd2c89d714340a8389ebd2e313b30d87eef6cadebe12d852c671662a |
File details
Details for the file base2048-0.1.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: base2048-0.1.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.0 MB
- Tags: CPython 3.7+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/0.13.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ad23081619ae06cd7de156252303a865e571bf0527f18272bedaad0f9d431164 |
|
MD5 | 02563dee5c614ba214514018b58dc692 |
|
BLAKE2b-256 | 448c1a3e859adbe3ae8f3d7c589abfd5983bd3d707b6197c369eb8e56a25cedd |
File details
Details for the file base2048-0.1.3-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
.
File metadata
- Download URL: base2048-0.1.3-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
- Upload date:
- Size: 448.2 kB
- Tags: CPython 3.7+, macOS 10.9+ universal2 (ARM64, x86-64), macOS 10.9+ x86-64, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/0.13.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a99289d9594300e55f04fa95a009f24d25d101160818c0be13e56edd9e4ca5c5 |
|
MD5 | d32450bf90e86585ef5598ca1a7453fc |
|
BLAKE2b-256 | 38be47723c2a1cf051c2f302be4dd42f847cf50fb7141569aedf8ae834e06a10 |