我正在尝试解码由下面的函数编码的字符串。我尝试通过执行c -= c-i
来反转加密,但它似乎无法正常工作。任何人都可以解释这是如何工作的?
public static String encode(String message){
StringBuilder b = new StringBuilder();
for(int i = 0;i<message.length();i++){
char c = message.charAt(i);
b.append(c += c+i);
}
return b.reverse().toString();
}
答案 0 :(得分:3)
您的编码 可逆(对于小邮件和一些字符集),但您的公式不正确。首先,反转消息(解码)。然后迭代字符。从当前值中减去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