code: public String readString()
          throws IOException
      {
          int tag = read();
  
          switch (tag) {
              case 'N':
                  return null;
  
              case 'I':
                  return String.valueOf(parseInt());
              case 'L':
                  return String.valueOf(parseLong());
              case 'D':
                  return String.valueOf(parseDouble());
  
              case 'S':
              case 's':
              case 'X':
              case 'x':
                  _isLastChunk = tag == 'S' || tag == 'X';
                  _chunkLength = (read() << 8) + read();
  
                  _sbuf.setLength(0);
                  int ch;
  
                  while ((ch = parseChar()) >= 0)
                      _sbuf.append((char) ch);
  
                  return _sbuf.toString();
  
              default:
                  throw expect("string", tag);
          }
      }
docs: Reads a string
  
  <pre>
  S b16 b8 string value
  </pre>