如何将char转换为C中的int,以便a = 0,b = 1,c = 2?

时间:2017-08-04 09:05:35

标签: c

我希望我的程序将字符转换为整数,但不能转换为ASCII等价物。 例如,'A'应该等于0而不是65,而'B'应该等于1。 然后我想将该数字添加到ASCII字符并将该值转换回char

3 个答案:

答案 0 :(得分:5)

char test = 'C';
int num = test - 'A';
// result: 2 with ASCII and any other encoding
// having the uppercase letters in sequence

答案 1 :(得分:5)

减法很好并且很容易实现,但它只适用于ASCII和所有其他具有相邻字母代码点的字符集(绝大多数)。

如果您必须担心代码可能在字符集不适用于此条件的计算机上运行,​​您可能更喜欢查找表:

int lookup[] = { ['a'] = 0, ['A'] = 0, /* ... */ };

如果使用任意数字,请不要忘记检查数组边界。请注意,其间的未指定值也会初始化为0,因此如果需要进行区分,可以在每个显式指定的值(['a'] = 1)中添加一个,为0添加适当的错误处理,否则再次减去1 ...

答案 2 :(得分:4)

检查字母是否为大写,然后分配值:

int num;
char ch = 'C'
if (ch >= 'A' && ch <= 'Z')
   num = ch - 'A'
else
   num = ch - 'a'