code: private int decodeByte( QrCode qr , PackedBits8 data, int bitLocation ) {
  		int lengthBits = QrCodeEncoder.getLengthBitsBytes(qr.version);
  
  		int length = data.read(bitLocation,lengthBits,true);
  		bitLocation += lengthBits;
  
  		if( length*8 > data.size-bitLocation ) {
  			qr.failureCause = QrCode.Failure.MESSAGE_OVERFLOW;
  			return -1;
  		}
  
  		byte rawdata[] = new byte[ length ];
  
  		for (int i = 0; i < length; i++) {
  			rawdata[i] = (byte)data.read(bitLocation,8,true);
  			bitLocation += 8;
  		}
  
  		// If ECI encoding is not specified use the default encoding. Unfortunately the specification is ignored
  		// by most people here and UTF-8 is used. If an encoding is specified then that is used.
  		String encoding = encodingEci == null ? (forceEncoding!=null?forceEncoding:guessEncoding(rawdata))
  				: encodingEci;
  
  		try {
  			workString.append( new String(rawdata, encoding) );
  		} catch (UnsupportedEncodingException ignored) {
  			qr.failureCause = JIS_UNAVAILABLE;
  			return -1;
  		}
  		return bitLocation;
  	}
docs: Decodes byte messages
  
  @param qr QR code
  @param data encoded data
  @return Location it has read up to in bits