字符和数字间的转换

一,数字和字符

1,原理

(1)编码

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

(2)字符编码

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

image
如果我们执行以下代码(编码使用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;
}

运行结果如下图
image
首先,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'的转换。

image

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类型的指针,指向要处理的字符串

posted @ 2022-10-09 00:08  烟尘墨  阅读(1693)  评论(0)    收藏  举报