code: public static final String bytesToString( byte[] data, int[] offset ) {
          offset[0] = 0;
  
          int length = bytesToInt(data, offset);
          String st = null;
  
          if ((length < 0) || (length > data.length)) {
              st = new String(data);
          } else {
              st = new String(data, offset[0], length);
          }
  
          offset[0] += length;
  
          return st;
      }
docs: Return the <code>String</code> represented by the bytes in
  <code>data</code> staring at offset <code>offset[0]</code>. This method
  relies on the user using the corresponding <code>stringToBytes</code>
  method to encode the <code>String</code>, so that it may properly
  retrieve the <code>String</code> length.
  
  @param data the array from which to read
  @param offset A single element array whose first element is the index in
  data from which to begin reading on function entry, and which on
  function exit has been incremented by the number of bytes read.
  
  @return the value of the <code>String</code> decoded