从字母转换为字母表中的相对位置(c#)

Bad*_*g22 3 c# alphabet

前一段时间我发现了这段代码,我想了解它是如何工作的)

int index = (int)c % 32 +1;
Run Code Online (Sandbox Code Playgroud)

我已成功使用此行将字母转换为数字 - 例如a变为1(A也是如此)有人可以解释一下这是怎么发生的(我看起来有点基础32但不是更明智)?还会有将整数转换回字母的简单方法?

jus*_*der 6

所有字母都有整数代码.例如'a'有代码97.所以(int)'a'是97.所以(int)'a' % 32是1.因为少于32个英文字母,一切都正确转换.同样通过快乐的巧合,上下字母之间的差异是32(例如'a' - 'A' == 32).因此适用于大写字母.

要将整数转换回字母,您还可以使用整数代码.例如,'A' + index - 1会给你带index字母数字的大写字母.也'a' + index - 1将给予相同数量的较低信.

以ASCII为例,查看符号的整数代码.