Я использую LevelDB с Java через JNI.
Я хочу предоставить числовой (целочисленный) ключ и иметь возможность повторять БД в порядке этого ключа. Мне трудно понять, как на самом деле работает компаратор по умолчанию для LevelDb, и как я буду кодировать int в byte[]
это позволило бы компаратору по умолчанию правильно упорядочить int
,
Документ LevelDb гласит:
В предыдущих примерах использовалась функция заказа по умолчанию для клавиши,
который заказывает байты лексикографически.
Я гуглил вокруг, но тупик для того, как я на самом деле закодировать 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;
}