8 releases

Uses old Rust 2015

0.3.3 Feb 22, 2019
0.3.2 Feb 22, 2019
0.2.2 Feb 19, 2019
0.1.0 Nov 22, 2018

#2064 in Encoding

Download history 16/week @ 2024-02-19 3/week @ 2024-02-26 4/week @ 2024-03-04 2/week @ 2024-03-11 52/week @ 2024-04-01

55 downloads per month
Used in set-encoding

Apache-2.0

7KB

TBE

Truncated Binary Encoding

https://en.wikipedia.org/wiki/Truncated_binary_encoding

k = floor_log2(n);
u = 2 * exp2(k) - n

Writing

if x < u write k least significant bits of x else add u to x and write k most significant bits of x and then write a least significant bit of x.

Reading

  1. read k bits as x.
  2. if u <= x then read an additional bit and add it to x as a least significant bit and substract u.

Examples (MSB first)

n = 2

k = 1;
u = 4 - 2 = 2;
BE TBE
0 0
1 1
n u

n = 3

k = 2;
u = 1
BE TBE(MSB) TBE(LSB)
00 0X 0X
01 10 10 u
10 11 11

n = 4

k = 2
u = 8 - 4 = 4
BE TBE
00 00
01 01
10 10
11 11
n u

n = 5

k = 2;
u = 3;
BE TBE
000 00
001 01
010 10
011 110 u
100 111

n = 6

k = 2;
u = 2;
BE TBE
000 00
001 01
010 100
011 101
100 110
101 111

n = 7

BE TBE
000 00
001 010
010 011
011 100
100 101
101 110
110 111

n = 10

k = 3;
u = 6;
BE TBE(MSB) TBE(LSB)
0000 000X 000X
0001 001X 100X
0010 010X 010X
0011 011X 110X
0100 100X 001X
0101 101X 101X
0110 1100 0110
0111 1101 0111
1000 1110 1110
1001 1111 1111

Dependencies

~175KB