docs: public byte[] getData(byte[] dst, int offset)
  	{
  		final int items = Math.min(data.length, dst.length - offset) / stringLength;
  		final int end = items * stringLength;
  		if (end == 0)
  			logger.error("destination range has to be multiple of 14 bytes "
  				+ "for KNX strings");
  		for (int i = 0; i < end; ++i)
  			dst[offset + i] = (byte) data[i];
  		return dst;
  	}
  
  	/* (non-Javadoc)
  	 * @see tuwien.auto.calimero.dptxlator.DPTXlator#getSubTypes()
  	 */
  	public final Map getSubTypes()
  	{
  		return types;
  	}
  
  	/**
  	 * @return the subtypes of the string translator type
  	 * @see DPTXlator#getSubTypesStatic()
  	 */
  	protected static Map getSubTypesStatic()
  	{
  		return types;
  	}
  
  	private String fromDPT(int index)
  	{
  		final int offset = index * stringLength;
  		final char[] output = new char[stringLength];
  		int strlen = 0;
  		for (int i = offset; i < (offset + stringLength) && data[i] != 0; ++i) {
  			output[strlen] = (char) data[i];
  			++strlen;
  		}
  		return new String(output, 0, strlen);
  	}
  
  	private void toDPT(byte[] buf, int offset)
  	{
  		// check character set, default to ASCII 7 bit encoding
  		int rangeMax = 0x7f;
  		if (dpt.equals(DPT_STRING_8859_1))
  			rangeMax = 0xff;
  		final int items = (buf.length - offset) / stringLength;
  		if (items == 0) {
  			logger.error("source range has to be multiple of 14 bytes for KNX strings");
  			return;
  		}
  		data = new short[items * stringLength];
  		// 7 bit encoded characters of ISO-8859-1 are equal to ASCII
  		// the lower 256 characters of UCS correspond to ISO-8859-1
  		for (int i = 0; i < data.length; ++i) {
  			final short c = ubyte(buf[offset + i]);
  			data[i] = c <= rangeMax ? c : replacement;
  		}
  	}