字符与数字的相互转换C++
一、字符转数字
char类型字符转换为数字,其实是转换为ASCII码值
有两种方式:
1.强制类型转换,结果为对应的ASCII码值
char v1 = 'a';
char v2 = 'z';
char v3 = '1';
char v4 = '9';
int num1 = (int)v1;
int num2 = (int)v2;
int num3 = (int)v3;
int num4 = (int)v4;
printf("%d %d %d %d\n", num1, num2, num3, num4);
运行结果
2.字符相减得到ASCII码的差值
字符减去字符得到的是它们ASCII码的差值(字符减去字符本身是0,再加上所需数字即可)
举例1:
将字符A~Z分别置为1~26,因为字符A减去字符A的结果是0,再加1即可将字符A置为1,将字符A作为根基。其他所有字母由于ASCII码值比字符A大,也都减去字符A再加1即可得到相对应的数字。
char arr[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (int i = 0; i < strlen(arr); i++)
{
printf("%d ", arr[i] - 'A' + 1);
}
举例2:
将字符型数字转换为对应的整型数字,只需要将字符型数字减去 ‘0’,因为他们的ASCII码差值正好是对应的整型数字值
int v1 = '1' - '0';
int v2 = '2' - '0';
printf("%d %d", v1, v2);
整型数字转字符型数字:+ ‘0’
二、数字转字符
1.加上某字符
数字加上某字符可以理解为某字符加上该数字,其实就是在该字符的ASCII码值加上数字,结果就是新的ASCII码值对应的字符
举例1:
将数字转换为对应的字符数字,只需加上字符‘0’即可
char v1 = 1 + '0';
char v2 = 9 + '0';
printf("%d %d", v1, v2);