字符串整数之间的转换

article/2025/10/2 23:00:10

在数字和字符之间转换
一、整数转字符
1.在后面加’0‘即可,如:‘1’+‘0’
这样做可行是因为字符0到字符9在ascii编码时是连续的,字符0的ascii值是48,字符1的ascii值是49,其他数字字符依次往后排,而ascii值实际上就是char型整数,所以可以用两个字符相加得到结果。
2.强制转换类型。

int a=9;char b;b=(char)a;  printf("%c",b);

在这里插入图片描述

二、字符转整数
1.在后面减去‘0’,用数字字付出减去’0’即’1’-‘0’(它俩是用ASCII码相减)。
2.使用itoa.

char* itoa(int num,char* str,int radix)
{
char index[]=“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ”;//索引表
unsigned unum;//存放要转换的整数的绝对值,转换的整数可能是负数
int i=0,j,k;//i用来指示设置字符串相应位,转换之后i其实就是字符串的长度;转换后顺序是逆序的,有正负的情况,k用来指示调整顺序的开始位置;j用来指示调整顺序时的交换。

//获取要转换的整数的绝对值
if(radix==10&&num<0)//要转换成十进制数并且是负数
{unum=(unsigned)-num;//将num的绝对值赋给unumstr[i++]='-';//在字符串最前面设置为'-'号,并且索引加1
}
else unum=(unsigned)num;//若是num为正,直接赋值给unum//转换部分,注意转换后是逆序的
do
{str[i++]=index[unum%(unsigned)radix];//取unum的最后一位,并设置为str对应位,指示索引加1unum/=radix;//unum去掉最后一位}while(unum);//直至unum为0退出循环str[i]='\0';//在字符串最后添加'\0'字符,c语言字符串以'\0'结束。//将顺序调整过来
if(str[0]=='-') k=1;//如果是负数,符号不用调整,从符号后面开始调整
else k=0;//不是负数,全部都要调整char temp;//临时变量,交换两个值时用到
for(j=k;j<=(i-1)/2;j++)//头尾一一对称交换,i其实就是字符串的长度,索引最大值比长度少1
{temp=str[j];//头部赋值给临时变量str[j]=str[i-1+k-j];//尾部赋值给头部str[i-1+k-j]=temp;//将临时变量的值(其实就是之前的头部值)赋给尾部
}return str;//返回转换后的字符串

}

int n = 100;
char str2[10];

//字符串比较麻烦,所以转字符串三个参数,我是这么记得(手动滑稽)
itoa(n,str2,10); //第一个参数为整数,第二个为字符串(char*),第三个为进制
cout << str2 << endl;

三、整数转字符串
1.使用itoa。itoa源码如下。

2.自己写个函数。

//整数转为字符串:通过加 '0’字符

void myItoa(long long n, char str[]){char temp[MAX]{0};int i(0);int j = 0;while(n){temp[i++] = n%10 + '0';n /= 10; }
//此时为逆序,需要调整为正序 
//cout <<  temp << endl;
while(i>0)str[j++] = temp[--i];
//cout << str << endl;

}

四、字符串转整数
1.使用stoi()

string s("12345");
long long a = stoi(s);
cout << a << endl;

2.自己写个函数

//字符串转为整数,通过减’0’字符,底层用ASCII码相减
void myAtoi(char str[],long long& m){
int i(0);
int temp = 0;
while(str[i] != ‘\0’){
temp = temp*10 + (str[i] -‘0’);
++i;
}
m = temp; //转换后赋值给m
}

————————————————


http://chatgpt.dhexx.cn/article/J2FTgMl2.shtml

相关文章

把字符串转换成整数(最详细解答)

题目要求&#xff1a; 分析&#xff1a; 把一个一个字符以整数的形式来进行输出&#xff0c;需要考虑相互转化的问题不能使用库函数&#xff01;&#xff01;&#xff01;首尾会有空格&#xff08;进行去空格操作&#xff0c;可以减少不必要的判断&#xff09;区分正负正数结果…

高并发系统架构设计之微服务篇19: 微服务拆分

文章目录 引言一、一体化架构的痛点1. 技术层面数据库连接数成为系统瓶颈2. 一体化架构增加了研发的成本&#xff0c;抑制了研发效率3. 一体化架构对于系统的运维也会有很大的影响。 二、如何解决这些痛点小结 引言 通过前面几个篇章的内容&#xff0c;你已经从数据库、缓存和…

理解分布式系统中的垂直拆分和水平拆分

概念 水平拆分简单字面意思是&#xff1a;水平方向上由一个拆分为多个。垂直拆分简单字面意思是&#xff1a;垂直方向上由一个拆分为多个。 1&#xff0c;垂直拆分 垂直拆分指按照功能进行拆分&#xff0c;秉着“专业的人干专业的事”的原则&#xff0c;把一个复杂的功能拆分…

垂直拆分和水平拆分

概念介绍 垂直拆分   垂直拆分就是要把表按模块划分到不同数据库表中&#xff08;当然原则还是不破坏第三范式&#xff09;&#xff0c;这种拆分在大型网站的演变过程中是很常见的。当一个网站还在很小的时候&#xff0c;只有小量的人来开发和维护&#xff0c;各模块和表都在…

软件架构设计之系统耦合性拆分

软件架构设计之系统模块的拆分 基本概念功能模块循环依赖问题 模块拆分原则高内聚性低耦合性 模块拆分方式模块拆分示例业务需求业务分析项目原始代码需求重构项目代码重构 总结 基本概念 功能模块拆分: 全面了解业务需求后,以寻找大量内聚性调用确定模块边界为目的,以寻求应用…

浅谈系统拆分

今晚好冷啊&#xff0c;回去的路上&#xff0c;我突然想到一件关于系统拆分的事情。举的例子很极端&#xff0c;仅供参考&#xff0c;不一定有实际的意义 我感觉拆分系统&#xff0c;和拆分代码&#xff0c;本质上是一样的。小到一个方法&#xff0c;大到几个系统&#xff0c;都…

分布式AKF拆分原则

1. 前言 当我们需要分布式系统提供更强的性能时&#xff0c;该怎样扩展系统呢&#xff1f;什么时候该加机器&#xff1f;什么时候该重构代码&#xff1f;扩容时&#xff0c;究竟该选择哈希算法还是最小连接数算法&#xff0c;才能有效提升性能&#xff1f; 在面对 Scalabilit…

记一次业务系统拆分的数据迁移及系统切换事项

一.迁移背景 老系统使用商业化软件&#xff0c;同时包含模块较多&#xff0c;架构无法支撑&#xff0c;维护成本高等考虑&#xff0c;需要根据业务模块拆分多个系统&#xff0c;新系统支持水平扩缩容 &#xff0c;rcp框架等&#xff0c;新系统基本上包含常用的技术栈&#xff…

拆分盘系统开发

转载于:https://blog.51cto.com/12916096/1925453

微服务拆分之AKF原则

AKF是指可拓展模型&#xff0c;有3个坐标轴&#xff0c;分别是x&#xff0c;y&#xff0c;z 为了更好的诠释AKF原则&#xff0c;下面假定有一个系统 基于x轴拓展&#xff1a; 这种方式只能拓展无状态服务&#xff0c;是通过复制系统应用到其他服务器上&#xff0c;再通过给集群…

拆分系统拆分盘盛出不穷,互助系统的延续走出新的路子,农场果园直销系统返利系统开始火了!

在互联网时代&#xff0c;互助盘已经开始落伍了&#xff0c;时代是在进步&#xff0c;现在出现了新的营销模式拆分盘系统模式。 而且非常受大家欢迎&#xff0c;那么什么是拆分盘系统呢&#xff1f; 打个比方&#xff0c;如果发行100分财富&#xff0c;你购买其中的一份财富。 …

分布式架构之系统拆分

系统拆分是单体程序向分布式系统演变的关键一步&#xff0c;也是很重要的一步&#xff0c;拆分的好坏直接关系到未来系统的扩展性、可维护性和可伸缩性等&#xff0c;拆分工作不难理解&#xff0c;但是如何正确拆分、有什么样的方法和原则能帮助我们拆分得到一个我们理想中的系…

水平拆分

水平拆分 概述水平分库示例水平拆分的优点水平拆分的缺点分片原则 概述 水平拆分指的是通过某种策略将数据分片存储&#xff0c;包含库内分表和分库两种&#xff0c;每片数据会分散到不同的MySQL表或库&#xff0c;达到分布式的效果&#xff0c;能够支持非常大的数据量。前面的…

微服务拆分策略

拆分策略可以按功能和非功能维度进行考虑&#xff0c;功能维度主要是划分清楚业务的边界&#xff0c;非功能维度主要考虑六点包括扩展性、复用性、高性能、高可用、安全性、异构性。接下来详细介绍下。 1、功能维度 功能维度主要是划分清楚业务边界&#xff0c;采用的主要设计…

微服务拆分

如何定义一个微服务架构&#xff1f;通常情况下&#xff0c;定义应用程序架构分三步。但是&#xff0c;世界上并没有一个机械化的流程可以遵守&#xff0c;然后指望这个流程输出一个合理的架构。这里只能介绍一个笼统的方法&#xff0c;现实世界中&#xff0c;这是一个不断迭代…

每日一题:为什么要进行系统拆分?

原文来自 GitHub 开源社区 Doocs&#xff0c;欢迎 Star 此项目&#xff0c;如果你有独到的见解&#xff0c;同样可以参与贡献此项目。 面试题 为什么要进行系统拆分&#xff1f;如何进行系统拆分&#xff1f;拆分后不用 dubbo 可以吗&#xff1f; 面试官心理分析 从这个问题开始…

个人对系统拆分的理解

在本人现在的公司和本人工作过的上一家公司&#xff0c;本人有幸参与并实施了公司业务系统的架构拆分&#xff0c;现将之前的工作总结下。 1&#xff0c;为什么要进行系统拆分 首先我们需要想想&#xff0c;到底什么样的系统需要进行拆分&#xff1f;并不是所有的系统都需要进…

登录+注册界面的实现(代码)

先看效果图&#xff01; 话不多说&#xff0c;直接上代码&#xff01; //布局文件&#xff1a;activity_login.xml <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android&qu…

简单WEB登录页面代码实现

longin.html&#xff1a;登录页面&#xff0c;此处action引用**/**类型的地址&#xff0c;JSP可以用${ pageContext.request.contextPath }/LS <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd&qu…

编写简单的登陆页面

1.简单登录界面&#xff08;自己设置css样式&#xff09; 代码如下 <form id"loginForm" action"#" method"post" novalidate"novalidate"><div class"login_box"><div class"login_box_left"&g…