private String getKeyByIndex(int index) {
    if (index <= 0 || index >= memberNum) {
      throw new IndexOutOfBoundsException();
    }
    synchronized (pageBuffer) {
      this.pageBuffer.limit(this.pageBuffer.capacity());
      this.pageBuffer.position(SchemaFileConfig.PAGE_HEADER_SIZE + index * COMPOUND_POINT_LENGTH);
      short ofs = (short) (this.pageBuffer.getLong() & SchemaFileConfig.COMP_PTR_OFFSET_MASK);
      this.pageBuffer.position(ofs);
      return ReadWriteIOUtils.readString(this.pageBuffer);
    }
  }
CompoundPointer structure (from high bits to low):

<ul>
  <li>16 bits: reserved
  <li>32 bits: page index, which points to target content
  <li>16 bits: key offset, which denotes where key is in this page/segment.
</ul>
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/schemafile/InternalPage.java