0

对于序列化/协议格式,我必须以节省空间的方式将无符号数编码为无符号 64 位整数,这种方式应该仍然很容易实现(意思是,我不是在寻找专用的压缩算法)。我在考虑以下问题:

if n<128  
    take bits 0..6 for representing n, set overflow bit 7 to 0
    store one byte
if n>=128 and n<16384
    take bits 0..6 of byte 1 as bits 0..6 of n, set overflow bit 7 of byte 1 to 1
    take bits 0..6 of byte 2 as bits 7..13 of n, set overflow bit 7 of byte 2 to 0
    store byte 1 followed by byte 2
 if n>=16384 and n<2^21
    ...set overflow bit 7 of byte 2 to 1... (and so on)

我对此有两个问题:

  1. 这种格式怎么称呼?我在哪里可以查找实现?

  2. 这是用于将通过套接字发送的二进制协议,其中将经常发送小于 128 的小数字。你认为额外的处理值得吗?

4

2 回答 2

0

与 UTF-8 不同,但类似于 UTF-8。

编辑

顺便说一句:尝试选择一个已知的协议。UTF-8,霍夫曼编码...

于 2011-02-03T12:06:23.900 回答
0

好的,经过更多研究,我终于找到了它。它被称为“可变长度量”,用于 MIDI 和 ASN.1(参见Wikipedia Entry

为了回答我的另一个问题,我倾向于认为不值得处理开销,但我仍在思考它。

于 2011-02-03T18:40:48.527 回答