2012-12-31 50 views
0

我正在記錄一箇舊的文件格式,並且陷入了以下問題。什麼是這種可變長整數編​​碼?

它似乎是整數是可變長度編碼,數字< = 0x7F編碼在一個字節,但> = 0x80編碼在兩個字節。設置的整數以及它們的編碼的對應的一個例子:

  • 0x390作爲0x9007
  • 0x150被編碼爲0xD002
  • 0x82被編碼爲0x8201
  • 0x89被編碼爲0x8901
被編碼

我還沒碰到過y數字大於0xFFFF,所以我無法確定它們是否/如何編碼。對於我的生活,我無法在這裏制定出模式。有任何想法嗎?

回答

2

一眼看上去數字被分割成7位塊,每個塊都被編碼爲輸出字節的7個最低有效位,而最高有效位表示這個塊之後是否還有更多字節(即編碼整數的最後一個字節的MSB爲0)。

輸入的最低有效位首先出現,所以我想你可以稱之爲「小端」。

編輯:請參閱https://en.wikipedia.org/wiki/Variable-length_quantity(用於MIDI和Google協議緩衝區)

+0

輝煌!感謝您的幫助;現在看起來非常明顯,我很早就沒有看到它,我感到很傻。 –