the-algorithm/src/java/com/twitter/search/common/encoding/docvalues/CSFTypeUtil.java

35 lines
1.1 KiB
Java

package com.twitter.search.common.encoding.docvalues;
public final class CSFTypeUtil {
private CSFTypeUtil() {
}
/**
* Convert a long into a byte array, stored into dest.
*/
public static void convertToBytes(byte[] dest, int valueIndex, int value) {
int offset = valueIndex * Integer.BYTES;
dest[offset] = (byte) (value >>> 24);
dest[offset + 1] = (byte) (value >>> 16);
dest[offset + 2] = (byte) (value >>> 8);
dest[offset + 3] = (byte) value;
}
/**
* Convert bytes into a long value. Inverse function of convertToBytes.
*/
public static int convertFromBytes(byte[] data, int startOffset, int valueIndex) {
// This should rarely happen, eg. when we get a corrupt ThriftIndexingEvent, we insert a new
// Document which is blank. Such a document results in a length 0 BytesRef.
if (data.length == 0) {
return 0;
}
int offset = startOffset + valueIndex * Integer.BYTES;
return ((data[offset] & 0xFF) << 24)
| ((data[offset + 1] & 0xFF) << 16)
| ((data[offset + 2] & 0xFF) << 8)
| (data[offset + 3] & 0xFF);
}
}