4

通过 JNI 使用 Java 的LevelDB 。

我想提供一个数字(整数)键,并能够按该键的顺序迭代数据库。我遇到困难的地方是理解 LevelDb 的默认比较器实际上是如何工作的,以及我如何将 int 编码为 abyte[]以让默认比较器正确地按 that 排序int

LevelDb 文档指出:

前面的示例使用了 key 的默认排序函数,它按字典顺序对字节进行排序。

我已经用谷歌搜索了,但是对于我如何将一个实际编码int为按字典顺序排列的字节感到困惑?

注意:如果我提供自己的比较器,它大约会使迭代时间加倍,因为现在所有的比较都必须在 JNI 边界上来回跳转,所以我不想这样做。

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 回答