对Int和算术进行类型转换不起作用

时间:2018-05-15 11:22:48

标签: c casting ascii

这是我的代码及其作用(或应该做的):

它遍历我要混淆的单词/明文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[]

}

0 个答案:

没有答案