我一段时间前找到了这段代码,我想理解它是如何工作的)
int index = (int)c % 32 +1;
我曾成功地使用这条代码将字母转换为数字 - 例如,a变成1(A也是)。请有人能解释一下这是如何发生的吗?(我稍微研究了一下32进制,但并不更明智)另外,是否有一种简单的方法将整数转换回字母?
'a'
的代码为 97。因此,(int)'a'
是 97。所以 (int)'a' % 32
是 1。因为英文字母少于 32 个,所以一切都能正确转换。同时,巧合的是,大小写字母之间的差异为 32(例如,'a' - 'A' == 32
)。因此,这也适用于大写字母。'A' + index - 1
将给出字母表中编号为 index
的大写字母。同样地,'a' + index - 1
将给出相同编号的小写字母。a
和A
之间的差异并不是唯一(必要)的巧合。更重要的是,65和97都是模32余1。 - pokec
始终是来自字母表的字符,我们知道它的数值在65和90之间,或在97和122之间。因此,取字符'A'
或'a'
,我们分别有数值65或97。(int)c % 32
给出了字母表中从1开始的字符索引。
+ 1
在那里实际上没有意义。有了它,'a'
和'A'
将给你 2(而不是 1)。想法可能是将其设置为- 1
,以获得从零开始的索引。 - poke