public override int Get3ByteInt(long index, int offset) { long address = address(index, offset); int lowWord = UnsafeUtil.getShort(address) & 0xFFFF; int highByte = UnsafeUtil.getByte(address + Short.BYTES) & 0xFF; int result = lowWord | (highByte << (sizeof(short) * 8)); return(result == 0xFFFFFF ? -1 : result); }
private short GetShort(long p) { if (UnsafeUtil.allowUnalignedMemoryAccess) { return(UnsafeUtil.getShort(p)); } return(UnsafeUtil.getShortByteWiseLittleEndian(p)); }