private String CombinedToPN(String recieved)
	{
		// split the recieved code into 2 parts
		String[] recieveds = new String[] {
				recieved.substring(0, 7),
				recieved.substring(7, 14),
				recieved.substring(14, 21),
				recieved.substring(21, 28)
		};
		
		// decode each part and join them to get the result byte
		StringBuffer decoded = new StringBuffer();
		for (String recievedi : recieveds) {
			int indexSyndrome = getSyndromeIndex(recievedi);
			int flipPosition = syndromeTable[indexSyndrome];
			
			// flip a bit if needed
			StringBuilder stringBuilder = new StringBuilder(recievedi);
			if(flipPosition != -1)
			{
				char flip = recievedi.charAt(flipPosition) == '0' ? '1' : '0';
				stringBuilder.setCharAt(flipPosition, flip);
			}
			// remove the partial check bits
			decoded.append(stringBuilder.toString().substring(0, 4));
		}
		
		return decoded.toString();
	}