嗨,我在下面有这段代码(代码 1),它应该反转另一个代码(代码 2)的效果,但它在任何一个代码中都不能正常工作。有人可以帮我弄这个吗?:)
代码 2 获取一个文本并获取每个字母,用一个数字对其进行乘以,然后用它的模数 29 找到其余部分。这个新数字就是加密的字母。然后我想用代码 1 来扭转这一点。
我的字母表 = a, b, c, ..., æ, ø, å = 29 个字母
具有因子 1、2 和 3 的示例“您”变为
(25*1)%29 = 25
(15*2)%29 = 1
(21*3)%29 = 5
“耶”
然后要反转它,我取新字母,将其除以因子并检查是否是没有小数的数字。如果不是,那么我将 29 添加到 lettervalue 并重新开始。
再次以 1、2 和 3 为例
“耶”
(25/1)%29 = 25
(1/2)%29 = 0,5 然后加 29
(30/2)%29 = 15
(5/3)%29 = 1,66 然后加 29
(34/3)%29 = 11,33 然后加 29
(63/3)%29 = 21
“你”
代码 1
String initialString = yourString.getText().toString();
char[] chars = initialString.toCharArray();
for (int i = 1; i <= chars.length; i++) {
if (chars[i-1] == ' '){
continue;
}
C = Integer.valueOf(faktorA);
if ( i%2 ==0 ) C = Integer.valueOf(faktorB);
if ( i%3 ==0 ) C = Integer.valueOf(faktorE);
chars[i-1] = characters.get((characters.indexOf(chars[i-1]) / C)%29);
if(chars[i-1]%1 != 0){
chars[i-1] = (char) (chars[i-1] * C + 29);
chars[i-1] = characters.get((characters.indexOf(chars[i-1]) / C)%29);
}
}
代码 2
String initialString = yourString.getText().toString();
char[] chars = initialString.toCharArray();
for (int i = 1; i <= chars.length; i++) {
if (chars[i-1] == ' '){
continue;
}
C = Integer.valueOf(faktorA);
if ( i%2 ==0 ) C = Integer.valueOf(faktorB);
if ( i%3 ==0 ) C = Integer.valueOf(faktorE);
chars[i-1] = characters.get((characters.indexOf(chars[i-1]) * C)%29);
}