-1

システム内のオブジェクトを識別するために使用される 32 ビットのグローバル ID 文字列と、携帯電話クライアントを一意に識別するモバイル ID 文字列があります。現在、モバイル ID は携帯電話番号ですが、生成される可能性があります。

ネットワーク トラフィックを節約するために、これら 2 つの文字列をローカル ID と呼ばれる別の小さな文字列に結合し、グローバル ID の代わりにその ID を電話に転送すると便利です。電話からローカル ID が転送されると、ローカル ID がグローバル ID に変換されて処理されます。ローカル ID は電話に固有である必要がありますが、グローバルに固有ではありません。モバイル ID はクライアントとサーバー間で既に共有されているため、送信する必要はありません。

最初に考えたのは、サーバー上に巨大なテーブルの配列を用意し、それぞれが特定のモバイル ID のグローバル ID をローカル ID にマッピングすることです。ただし、それができるような単純なアルゴリズムが存在する場合

algorithm(mobileid, globalid) = localid     -----> server sends localid to client

client sends localid back to server

algorithm(mobileid, localid) = globalid

これは可能ですか?もしそうなら、始めるための最良の方法は何ですか?よろしくお願いします。

4

1 に答える 1

0

次のようなローカル ID が必要です。

  • そこからグローバルIDをデコードできます
  • そこからモバイルIDをデコードできます

したがって、簡単な方法はルックアップ テーブルですが、それは不要だと既におっしゃっています。

同じデータを再度抽出したいので、必要なのはハッシュアルゴリズムではなく圧縮アルゴリズムです。大量のデータ (32 ビット + 電話番号) がないため、従来の圧縮アルゴリズムが機能するとは思えません。

私の注意を引いたのは、32 ビットの文字列と言うときです。32ビットの数値の文字列表現がある場合、10 文字 (最大 unsigned int = 4294967295) が必要ですが、実際には 4 バイトしか必要ありません。電話番号も一緒です。プロトコルのために数値を ASCII 文字列として保存する必要がある場合は、base64 エンコーディングを使用できます。

于 2012-06-29T18:40:03.760 に答える