【原】整型与字符串的相互转化
来源:互联网 发布:傲剑丹田升级数据大全 编辑:程序博客网 时间:2024/05/17 05:37
整型与字符串的相互转化
By 呆龙
常用到的整形与字符串相互转化多用到库函数:
atoi/itoa/sprintf等
下面是不用库函数自己实现整形转化为字符串
整型数据456转化字符“456”输出
首先回顾一下ASCII的知识:
ASCII(American Standarded Code for Information Interchange美国标准信息交换码):用一个字节的除最高位外的七位表示字符,共可表示128种字符的字符集:
其中:第0~32号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;48~57表示阿拉伯数字;65~90表示英文大写字母;97~122表示英文小写字母,
字符 编码的十进制
0 48
1 48+1
2 48+2
…
x 48+x
…
9 48+9
由上可以看出,任意一个整数将其每一位加上48即可得到相应字符的ASCII编码
int main()
{
int m = 456;
int i = 0;
int str_0[10] = {0};//缓存
str_0[1] = m/100 +48;
str_0[2] = (m%100)/10 + 48;
str_0[3] = m%10 + 48;
for (i = 0; i < 3; i++)
{
printf(“%c”, str_0[i]);
}
return 0;
}
缺点:①数据存于整型数组。
②转换不具备通用性。
针对第一点:根据字符与整型数据的一致性改动程序如下:
int main()
{
int m = 456;
int i = 0;
char str_0[10] = “”;//缓存
str_0[1] = m/100 + ‘0’;
str_0[2] = (m%100)/10 + ‘0’;
str_0[3] = m%10 + ‘0’;
cout << str_0 << endl;
return 0;
}
第二点:
且看这里
12…..x%10 = (12…..0 + x)%10 = x;
12…xy/10 = (12..x0 + y)/10 = 12…x;
也就是说:
m%10永远等于最后一位
m/10永远等于除最后一位前边所有位
这就给我们构造了一个循环的可能
while(m)
{
buf[i++] = m%10;
m = m/10;
}
这样就可以将整数的各个位逆序的存入缓存buf中等待进一步处理
代码如下:
void itoastr( int num, char *str)
{
char buf[80] = "";
int iCount = 0; //循环计数
char *p = buf;
char *q = p;
char *strTmp = str;
int temp = num < 0 ? -num:num;
//异常检测
if (!str)
{
return;
}
//如果整数为0,直接赋值返回
if (0 == temp)
{
*str = '0';
return;
}
//如果整数为负数,先做符号处理
else if (0 > num)
{
*(strTmp++) = '-';
}
//取得整数的各个位逆序存入缓存
while (temp)
{
buf[iCount++] = temp % 10;
q++;
temp = temp / 10;
}
//从缓存中取得各个位转换成字符正序存入字符数组
for (; q > p;)
{
*(strTmp++) = *(--q) + '0';
}
return;
}
int main()
{
int iNum = -123;
char str[10] = "";
(void)itoastr(iNum, str);
cout << str << endl;
return 0;
}
这样就完成了一个简单的整数向字符串转换函数
- 【原】整型与字符串的相互转化
- Objective-c 字符串与整型相互转化
- 整型和字符串的相互转化
- c++整型与二进制的相互转化
- 整型和字符串相互转化
- 整型转化为字符串(相互)
- 字符串与整型数的相互类型转化-atoi和itoa的简单写法~
- 整型数据与字符串类型相互转化的一种实现方法
- JAVA的整型与字符串相互转换
- JAVA的整型与字符串相互转换
- JAVA的整型与字符串相互转换
- JAVA的整型与字符串相互转换
- JAVA的整型与字符串相互转换
- JAVA的整型与字符串相互转换
- JAVA的整型与字符串相互转换
- JAVA的整型与字符串相互转换
- JAVA的整型与字符串相互转换
- JAVA的整型与字符串相互转换
- 【转】ffmpeg tutorial翻译——第一部分:制作屏幕录像
- 我的随身电脑-千脑(转载)
- 【转】ffmpeg tutorial 2:输出到屏幕
- Oracle函数大全
- 【转】ffmpeg tutorial 3:播放声音
- 【原】整型与字符串的相互转化
- 架构师的那些事儿
- 【转】ffmpeg tutorial 4:创建线程
- Python2.5/2.6实用教程:基础篇
- 【转】ffmpeg tutorial 4:创建线程 第二部分
- 【转】ffmpeg tutorial 5:同步视频
- Netapp fundamental trainning 笔记2 basic admin
- 【转】ffmpeg tutorial 6:同步音频
- 【转】ffmpeg tutorial 7:快进快退