@Override
  public Object getField(int fieldID) {
    String bytesAsString = new String(bytes.getData(), start, length);

    log.info("Data: " + bytesAsString + ", " + Arrays.toString(bytes.getData()));

    // The separator for the hive row would be using \x02, so the separator for this struct would be
    // \x02 + 1 = \x03
    char separator = (char) ((int) oi.getSeparator() + 1);

    log.info("Separator: " + String.format("%04x", (int) separator));

    // Get the character/byte at the offset in the string equal to the fieldID
    String[] fieldBytes = StringUtils.split(bytesAsString, separator);

    log.info("Fields: " + Arrays.toString(fieldBytes));

    return toLazyObject(fieldID, new byte[] {(byte) fieldBytes[fieldID].charAt(0)});
  }
Gets the first character of each string in a struct
accumulo-handler/src/test/org/apache/hadoop/hive/accumulo/serde/FirstCharAccumuloCompositeRowId.java