2011-02-03 14 views
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。你認爲額外的處理是值得的嗎?

回答

0

好的,經過一些更多的研究,我終於找到了它。它被稱爲「可變長度數量」,並用於MIDI和ASN.1(請參閱Wikipedia Entry

要回答我的其他問題,我傾向於認爲它不值得處理開銷,但我仍在思索關於它。

0

不一樣,但類似於UTF-8。

編輯

BTW:嘗試選擇一個已知的協議。 UTF-8,霍夫曼編碼...

+0

感謝您的及時回覆。當然,我想用一個已知的協議,這就是爲什麼我問。我知道與UTF8的相似之處,但這是針對數字的。使用7位編碼和1位溢出位的基於字節格式是相當自然的,我發現我不太可能發明它。以前沒有人看過這個嗎? – user601395 2011-02-03 15:50:19

相關問題