code: String
  rrToString() {
  	StringBuffer sb = new StringBuffer();
  	sb.append(alg);
  	sb.append(" ");
  	if (Options.check("multiline"))
  		sb.append("(\n\t");
  
  	sb.append (timeSigned.getTime() / 1000);
  	sb.append (" ");
  	sb.append (fudge);
  	sb.append (" ");
  	sb.append (signature.length);
  	if (Options.check("multiline")) {
  		sb.append ("\n");
  		sb.append (base64.formatString(signature, 64, "\t", false));
  	} else {
  		sb.append (" ");
  		sb.append (base64.toString(signature));
  	}
  	sb.append (" ");
  	sb.append (Rcode.TSIGstring(error));
  	sb.append (" ");
  	if (other == null)
  		sb.append (0);
  	else {
  		sb.append (other.length);
  		if (Options.check("multiline"))
  			sb.append("\n\n\n\t");
  		else
  			sb.append(" ");
  		if (error == Rcode.BADTIME) {
  			if (other.length != 6) {
  				sb.append("<invalid BADTIME other data>");
  			} else {
  				long time = ((long)(other[0] & 0xFF) << 40) +
  					    ((long)(other[1] & 0xFF) << 32) +
  					    ((other[2] & 0xFF) << 24) +
  					    ((other[3] & 0xFF) << 16) +
  					    ((other[4] & 0xFF) << 8) +
  					    ((other[5] & 0xFF)     );
  				sb.append("<server time: ");
  				sb.append(new Date(time * 1000));
  				sb.append(">");
  			}
  		} else {
  			sb.append("<");
  			sb.append(base64.toString(other));
  			sb.append(">");
  		}
  	}
  	if (Options.check("multiline"))
  		sb.append(" )");
  	return sb.toString();
  }
docs: Converts rdata to a String