4

Java から JNI 経由でLevelDB を使用しています。

数値(整数)キーを指定し、そのキーの順序でデータベースを反復できるようにしたいと考えています。私が苦労しているのは、LevelDbのデフォルトのコンパレータが実際にどのように機能するか、およびデフォルトのコンパレータがbyte[]それによって正しく順序付けられるように int を a にエンコードする方法を理解することですint

LevelDb ドコには次のように記載されています。

前の例では、key のデフォルトの順序付け関数を使用しました。これは、辞書順でバイトを順序付けます。

私はグーグルで検索しましたが、辞書順に並べられたバイトintに実際にエンコードする方法に困惑していますか?

注: 独自のコンパレーターを提供すると、すべての比較で JNI 境界を前後にジャンプする必要があるため、反復時間が約 2 倍になるため、そうしたくありません。

4

1 に答える 1

0

このエンコーディングは機能します:

public synchronized static byte[] encode(int key) {
        encoded[0] = (byte)(key >> 24);
        encoded[1] = (byte)(key >> 16);
        encoded[2] = (byte)(key >> 8);
        encoded[3] = (byte)(key);
        return encoded;
    }
于 2014-05-08T06:33:33.790 に答える