编程语言
首页 > 编程语言> > 从字母转换为字母表中的相对位置(c#)

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

作者:互联网

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

int index = (int)c % 32 +1;

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

解决方法:

这完全取决于字符(和字符串)的实际表示方式.每个字符都使用code points编码,这些只是数字.许多代码点构成一个代码页,它本质上是一个将数字映射到实际字符的表.

忽略Unicode附带的大代码页,你现在可以看看ASCII,这是前128个代码点的编码.在那里,您可以看到标准大写字母从数字65开始,而小写字母从数字97开始.

所以在你的公式中,如果我们假设c总是字母表中的字符,我们知道它的数值在65到90之间,或者在97到122之间.所以我们得到字符“A”或“a”值分别为65或97.

剩下的就是巧合,大写和小写字母从32开始,65模32是1.这使得(int)c%32给你从1开始的字母表中的字符索引.

标签:c,alphabet
来源: https://codeday.me/bug/20190716/1476790.html