8个发布版本

使用旧Rust 2015

0.3.3 2019年2月22日
0.3.2 2019年2月22日
0.2.2 2019年2月19日
0.1.0 2018年11月22日

2165编码

每月下载量 26
set-encoding 中使用

Apache-2.0

7KB

TBE

截断二进制编码

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

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

编写

如果 x < u,则写入 xk 个最低有效位;否则将 u 添加到 x,并写入 xk 个最高有效位,然后写入 x 的最低有效位。

读取

  1. 读取 k 位作为 x
  2. 如果 u <= x,则读取一个额外的位,并将其作为最低有效位添加到 x,并从 x 中减去 u

示例(最高有效位优先)

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

依赖

~170KB