2011-02-03 2 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と同じではありませんが、UTF-8と似ていません。

編集

ところで:試してみて、既知のプロトコルを選択します。 UTF-8、ハフマンエンコーディング...

+0

すぐにお返事ありがとうございます。確かに、私は知られているプロトコルを使用したいので、それは私が求めている理由です。私はUTF8との類似点を認識していますが、これは数字です。エンコーディングに7ビットのバイトベースのフォーマットを使用し、1オーバーフロービットを使用するのは自然であり、私がそれを発明したばかりであるとは思えません。以前誰も見たことがありませんか? – user601395

関連する問題