字符和数字间的转换
一,数字和字符
1,原理
(1)编码
编码是信息从一种形式到另一种形式的转换过程,也可以说编码是这两种形式的信息之间的一种联系。比如阿拉伯数字“1”到中文字符“一”,这之间就是一种转换,也可以看成“1”和“一”之间的联系

(2)字符编码
字符编码就是将字符和数字联系起来。比如在ASCII码(一种字符编码)中,'A'对应97这个数字,就是对字符和数字进行关系映射。
在C语言中,char类型用于存储字符,但是实际上它是个整数类型,它存储的是整数。比如,当char类型的变量存储'A'时,实际上存储的是97。
当计算机在处理char类型的变量时,会将这个变量的整数值转换为对应的字符,其中这个对应关系根据所使用的编码而定。(下文以ASCII码进行说明)

如果我们执行以下代码(编码使用ASCII码)
#include <stdio.h>
int main(void)
{
int char_1 = 97;
char char_2 = 97;
printf("char_1==%c char_2==%c",char_1,char_2);
return 0;
}
运行结果如下图

首先,printf对int类型的char_1先进行了强制类型转换转换成char类型,然后在打印char_1时,根据97对应'A'的关系打印出'A',char类型的char_2则是直接根据97对应'A'的关系打印出'A'。
(3)转换方式
i,数字转字符
char a = '0';
int b = 1;
char c = a + b;//c为'1'
a变量存储的值为'0',实际上存储了48的整数值,b变量存储了1的整数值。
c为a+b的和,即49,对应的则是'1',于是就完成了1到'1'的转换。

ii,字符转数字
char a = '1';
int b = a - '0';//b为1
a变量存储的值为'1',实际上存储了49的整数值,'0'对应48的整数值,故b的转换过程如下,就实现了'1'到1的转换。
b = a - '0' = '1' - '0' = 49 - 48 = 1;
iii,字符串转数字
此处提供一些可以将字符串转成数字的函数
字符串转整数
#incldue <stdlib.h>
int main()
{
char str[] = "123456";
//char *str = "123456"
int num1 = atoi(str);
int num2 = atol(str);
}
//函数声明
int atoi(const char *str);
aoti函数用于将字符串转换为int类型的整数。
其返回值为转换结果,无法转换返回0。其参数为char类型的指针,指向要处理的字符串
#incldue <stdlib.h>
int main()
{
char str[] = "123456";
//char *str = "123456"
long num1 = atol(str);
long num2 = atol(str);
}
//函数声明
long int atol(const char *str);
aotl函数用于将字符串转换为long int(即long)类型的整数。
其返回值为转换结果,无法转换返回0。其参数为char类型的指针,指向要处理的字符串
字符串转浮点数
#incldue <stdlib.h>
int main()
{
char str[] = "123456.33";
//char *str = "123456.33"
double num1 = atof(str);
double num2 = atof(str);
}
//函数声明
double atof(const char *str);
aotf函数用于将字符串转换为double类型的浮点数。
其返回值为转换结果,无法转换返回0.0。其参数为char类型的指针,指向要处理的字符串

浙公网安备 33010602011771号