从两个字节创建最小的唯一编号

Ehs*_*san 3 algorithm

我们都知道字节范围是0到255
我有两个字节,我想创建另一个可逆的数字,但最小长度组合这两个数字并创建一个新的,最简单的解决方案是

a = b1*1000 + b2

反过来会

b1 = a/1000
b2 = a%1000

上面的解决方案的长度变化0到6长度,我想要一个具有FIXED和最小长度的公式

小智 5

编码:

x = b1 * 256 + b2;
x = x + 10000;
Run Code Online (Sandbox Code Playgroud)

解码:

x = x - 10000;
b1 = x >> 8;
b2 = x & 255;
Run Code Online (Sandbox Code Playgroud)

编码结果总是长度为5(10000通过75535包含).由于有65536个不同的对(b1,b2),因此无法将它们编码为长度<5的数字(因为最多有10000个这样的数字).