1. 字符串转化为整数
由于字符串初始化时,可以用字符进行赋值"ster"
或者 'A'
经赋值。相对应的,整数字符串,如"89763"
,或者单个字符,可以直接由整数赋值,如char c=65;
,那么,c
按照字符的表现可以被识别为A
。而且,单个字符在计算机中是以整数的形式进行保存的,所以,在将字符串转换为整数时,需要区别对待。
1.1 第一种:字符串为真正意义上的字符串赋值,即字符串上每个字符为 char c = 'A'
//////////////////////////////////////////////////////////////////////////
//实现字符串向整数的转换
//
//number:上层数据遗留,类似于加法进位器
//string: 12345
//int : number*10+1)*10)+2)*10+2)*10+4)*10+5
//
//char * src: 字符串数组
//int length:字符串的长度
//int * number:
// 1)作为输入源:代表数据原始的数组,为上一次数据的进位;
// 2)作为输出源:代表数据最终的结果
//////////////////////////////////////////////////////////////////////////
void string2int(char * src, int * number, int length);
void string2int(char * src, int * number, int length)
{
//define the buffer to store the data
char * str = (char *)malloc(sizeof(char)*(length+1));
memset(str, '\0', length+1);
memcpy(str, src, length);
//transfer string to int
int temp = *number; //原有的数据不为零时,也需要考虑
int i=0;
for (i=0; i<length; i++)
{
temp *= 10;
//原有数据为字符'A',顾需要减去'0'
temp += (int)(str[i] - '0');
}
//return the transfer number
*number = temp;
//clear the dynamic memory
delete str;
str = NULL;
}
1.2 字符串中的字符为整数赋值, 即 char c = 9
;
// src :
void String2Int(char * src, int * number);
void String2Int(char * src, int * number)
{
int i;
int temp = *number;
for (i=0; src[i]!= '\0'; i++)
{
//由于字符为整数赋值,可以直接强转
temp = temp * 10 + (int)src[i];
//PRINT(temp);
}
*number = temp;
}
2. 整数转化为字符串
// src: 字符串
// number : 整数
void int2String(char * src, int number) ;
void int2String(char * src, int number)
{
int i;
int temp = number;
for (i=0; temp>0; i++)
{
src[i] = temp %10;
temp = temp /10;
}
}
3. 归纳总结
注意几点:
1)字符串->整数
字符串初始化为字符赋值,则转换为整数需要减去’0’;
字符串初始化为整数赋值, 则可以直接转换为整数;
2)整数->转换为字符串
整数整体保存为字符,保存的实际为ASCII表中该整数对应的字符。但只能保存0-127;
整数按照位保存为字符,有两种方式,一种是直接保存,实际保存的是该整数对应的ASCII字符;另一种是将整数加上’0’,此时保存的是’整数’.