这是我的代码及其作用(或应该做的):
它遍历我要混淆的单词/明文string plaintext
。它应该迭代plaintextLength
- 多次。 if
- 循环中的for
- 语句确保只对字母字符进行模糊处理。所有非字母字符都应该被复制。
当我输入例如keyword
baz ,例如一个plaintext
barfoo 然后,我的代码应该采用plaintext
的第一个字符,即字符 b (ASCII:98)并将其移位通过keyword
的第一个字符,它恰好也是一个字符 b 。因此plaintext
中的 b 应按数字 1 进行移位,因为keyword
中的 b 是第二个字符。字母表及其索引 1 (即 a / A = 0 , b / B = 1 , c / C = 2 ,..., z / Z = 25 )。 plaintext
中的 b 将变为 c (ASCII 99),此字符 c 将保存在数组{{1}中}。 cipher[0]
中的字符应移位的索引由函数plaintext
计算。
然而,一切正常,直到它超过ASCII 122.例如。如果我们在addIndex()
中找到第三个字符 r (ASCII:114),将其移动 z (= 25)将导致ASCII为139.因此当它到达字母表的末尾(ASCII 122)时,它应该从 a 和ASCII 97再次开始。这行代码plaintext
应该完成这项工作。但是当我运行该程序时,它不计算它并在cipher[i] = 97 + (ascii - 122);
中直接保存ascii
(其值为139)。
我认为类型转换存在问题,但无法理解为什么会发生这种情况。我的意思是cipher[2]
是一个整数值,因此从139添加ascii
和减去97
应该不是问题。此计算的结果将被隐式地转换为字符,以便保存在数组122
中。
非常感谢任何帮助。
cipher[]
}