Skip to main content

Base16

A human-readable, compact binary data representation. Base16 is the hexidecimal system with a different character set - chosen to minimize ambiguity between letters. It is useful for high entropy inputs like voucher codes and confirmation codes. By default, when an alphanumeric character outside the base16 character set is decoded it is first replaced with the most similar valid character. The main goal is to minimise user frustration around these types of data input.

Character Set

Hexidecimal Base16
0 A
1 B
2 C
3 D
4 E
5 G
6 H
7 K
8 P
9 R
a S
b T
c W
d X
e Y
f Z

Usage

Install

pip install base16

Python

>>> import base16

>>> base16.encode(b'Hello, World!')
b'EPHGHWHWHZCWCAKKHZKCHWHECB'

>>> base16.decode(b'EPHGHWHWHZCWCAKKHZKCHWHECB')
b'Hello, World!'

>>> base16.random(16)
b'BABKXPWCBBPZDGPB'

Command Line

> bash16 --encode "Hello, World!"
EPHGHWHWHZCWCAKKHZKCHWHECB

> bash16 --decode "EPHGHWHWHZCWCAKKHZKCHWHECB"
Hello, World!

> base16 --random 32
PKCTPECYBZGGXKRATBCCHGWDDECKCWCA

> echo "some piped data" | base16 --encode
KDHZHXHGCAKAHRKAHGHECAHEHBKEHB

> echo "KDHZHXHGCAKAHRKAHGHECAHEHBKEHB" | base16 --decode
some piped data

Decoding Incorrect Characters

If the user tries to decode a character not included in the base16 character set, we first replace it with the most-likely intended valid character. These replacement characters were chosen from a 1983 study [1] of four male university students' transcription errors. When a more representative study is found, these values can be safely changed later.

Invalid Valid
0 D
1 T
2 Z
3 E
4 A
5 S
6 G
7 T
8 B
9 P
F E
I T
J T
L E
M W
N H
O D
Q D
U W
V Y

References

[1] Gupta, S.M. et al., Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, 1983, 83, 144-149

Release files for base16 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for base16 0.1.2
File Size Uploaded
base16-0.1.2.tar.gz 9.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for base16 0.1.2
File Interpreter ABI Platform
base16-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 17.2 kB

Release files / base16-0.1.2.tar.gz

Download URL base16-0.1.2.tar.gz
Size 9.3 kB
Tags Source
SHA-256 checksum
How to use checksums
de179bc6715bf130f0f06e2b2f6e836bc940b3ac7a9a23aae810fba0904a5940
BLAKE2b-256 checksum
How to use checksums
c02541a9f24abde71d7e0f8634caf9f37fe58fde8ef8c2d77cc6066b398be55d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.10

Release files / base16-0.1.2-py3-none-any.whl

Download URL base16-0.1.2-py3-none-any.whl
Size 7.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
78ecbb725a07d4229dc41b0f79b6b1244126111c6c9b451c8c3f1bbfa490ab7c
BLAKE2b-256 checksum
How to use checksums
993f0e03d45f63a5d4d5a8d477bd019ef7a33f3218c625064615058b42de6729
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.10

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page