@Override
	public List<Double> dataToSignal(String input) {
		List<Double> signal = cache.get(input);
		if (signal == null) {
			signal = new ArrayList<>();
			for (int i = 0; i < input.length(); i++) {
				String binary = Integer.toBinaryString(input.charAt(i));
				// Add leading zeroes:
				for (int j = 0; j < charSize - binary.length(); j++) {
					signal.add(Double.valueOf(0));
				}
				for (int j = 0; j < binary.length(); j++) {
					signal.add(Double.valueOf(binary.charAt(j) == '1' ? 1.0 : 0));
				}
			}
			// Fill the empty letters to the end:
			while (signal.size() < numberOfSignals()) {
				signal.add(Double.valueOf(0));
			}
			cache.put(input, signal);
		}
		return signal;
	}