LevelDB的默认比较器

时间:2014-05-08 04:09:51

标签: java c++ bit-manipulation leveldb

我正在使用LevelDB from Java via JNI

我想提供一个数字(整数)键,并能够按该键的顺序迭代db。我遇到困难的地方是理解LevelDb的默认比较器是如何工作的,以及我如何将int编码为byte[],这样可以使默认比较器按int正确排序。

LevelDb doco声明:

  

前面的例子使用了密钥的默认排序功能,   按字典顺序排序字节。

我已经开始搜索了但是我真的很难将int编码为按字典顺序排列的字节

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

1 个答案:

答案 0 :(得分: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;
    }