Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java LevelDB的默认比较器_Java_C++_Bit Manipulation_Leveldb - Fatal编程技术网

Java LevelDB的默认比较器

Java LevelDB的默认比较器,java,c++,bit-manipulation,leveldb,Java,C++,Bit Manipulation,Leveldb,我正在使用LevelDB 我想提供一个数字(整数)键,并能够按照该键的顺序迭代db。我遇到的困难是理解LevelDb的默认比较器实际上是如何工作的,以及我如何将int编码成字节[],从而让默认比较器按照该int正确排序 LevelDb doco声明: 前面的示例使用了键的默认排序函数, 按字典顺序排列字节 我已经在谷歌上搜索过了,但对于如何将int编码成按字典顺序排列的字节,我感到困惑 注意:如果我提供自己的比较器,它将使迭代时间大约增加一倍,因为现在所有的比较都必须在JNI边界上来回跳转,所以

我正在使用LevelDB

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

LevelDb doco声明:

前面的示例使用了键的默认排序函数, 按字典顺序排列字节

我已经在谷歌上搜索过了,但对于如何将
int
编码成按字典顺序排列的字节,我感到困惑

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

此编码工作:

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;
    }

看起来leveldb在字符串上工作,并且它们是有序的。您可以尝试的一件事是将整数转换为字符串,并且该字符串以整数的总位数作为前缀。例如,0-9编码为10-19。10-99编码为210-299。100-999编码为3100-3999,以此类推。