对于序列化/协议格式,我必须以节省空间的方式将无符号数字编码为无符号的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)
我有两个问题:
如何调用此格式?我在哪里可以查看实现?
这是针对将通过套接字发送的二进制协议,其中将经常发送小数字<128。您认为额外的处理是否值得?
答案 0 :(得分:0)
与UTF-8不同,但相似。
修改强>
BTW:尝试选择一种已知的协议。 UTF-8,霍夫曼编码......
答案 1 :(得分:0)
好的,经过一些研究,我终于找到了它。它被称为“可变长度数量”,用于MIDI和ASN.1(见Wikipedia Entry)
要回答我的另一个问题,我倾向于认为这不值得处理开销,但我仍在思考它。