带溢出位的数字的二进制存储...如何调用格式?

时间:2011-02-03 12:01:44

标签: numbers protocols binary-serialization

对于序列化/协议格式,我必须以节省空间的方式将无符号数字编码为无符号的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。您认为额外的处理是否值得?

2 个答案:

答案 0 :(得分:0)

与UTF-8不同,但相似。

修改

BTW:尝试选择一种已知的协议。 UTF-8,霍夫曼编码......

答案 1 :(得分:0)

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

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