Ваша кодировка является обратимой (для небольших сообщений и некоторого набора символов), но ваша формула неверна.Сначала переверните сообщение (для декодирования).Затем повторяйте символы.Вычтите i
из текущего значения, а затем разделите на 2
.Как,
public static String decode(String message) {
StringBuilder b = new StringBuilder(message).reverse();
StringBuilder o = new StringBuilder();
for (int i = 0; i < b.length(); i++) {
char c = b.charAt(i);
c -= i;
c /= 2;
o.append(c);
}
return o.toString();
}
Математика: c += c + i
;эквивалентно c = (2 * c) + i