将字符串转成数字在很多编程语言都有相关的工具类,你知道其底层是如何实现的吗?
在Java里面有工具类:
```
Interger.parseInt("123")
```
Python里面有工具类:
```
int("123")
```
其他的编程语言就不一一列举了,使用工具类进行转换人人都会,所以并不重要,重要的是我们要来学习下它底层是如何转换的,先上我用Java实现的一段代码如下:
```
private static int stringToInt(String s){
// Having one number at least.
if(!s.matches("\\d+")){
return -1;
}
char []array=s.toCharArray();
int lastIndex=array.length-1;
int radix=0;
int result=0;
// right to left compute
while (lastIndex>=0){
int asciiToNumber= array[lastIndex] - 48;
result += Math.pow(10,radix) * asciiToNumber ;
radix++;
lastIndex--;
}
return result;
}
```
从上面能够看到代码量并不是很多,下面我解释下是如何实现的:
(1)首先对传入的字符串进行校验,必须是纯数字的,否则就返回-1.
(2)在通过检查之后,将字符串转成char数组
(3)为了让代码更加清晰易懂,我这里声明了三个变量,第一个就不说了,第二个代表的是10机制的基数,因为我们从个位,十位,百位....这样的进制循序渐进,所以代表的是10的几次方,比如个位是10的0次方,十位是10的1次方,百位是10的2次方,这里代表的就是从0开始的数字的个数。最后一个变量用来存储最终返回的结果。
(4)ok,在循环里面我们从右到左的顺序遍历,首先将ASCII码的数字-48,转成实际的数字,至于为什么这么做,后面再说,然后按照进制进行十进制换算然后与实际的数字相乘,最后将结果累加起来,就得到了最终的值。
比如字符串“123”,实际的结果= 3 * 10^0 + 2 * 10^1 + 1 * 10^3 = 3+20+100=123,至此转换完毕。
至于为什么要拿char字符减去48才能得到实际的数字,是因为在ASCII码里,48代表0,我们看如下的ASCII码表:
注意第48-57的位置分别代表了0-9的ASCII码,也就是说对于char类型的字符数字码减去48得到的值就是该字符代表的真正意义的数字。
现在,你理解字符串如何转成数字了吗?当然我们这里仅仅是一个最简单的版本,没有考虑各种case,比如正负数,边界溢出,或者浮点类型等等,其思路基本都一样,感兴趣的朋友可以自己尝试。
有什么问题可以扫码关注微信公众号:我是攻城师(woshigcs) 关注公众号的朋友,可以加入我们的:攻城师互助交流群,一起学习!
- 大小: 27.3 KB
分享到:
相关推荐
字符串处理是编程语言中最基本也是最重要的操作之一。在这里,我们使用了gets函数来读取用户输入的字符串,并使用strlen函数来获取字符串的长度。 知识点2:字符判断 在字符串处理中,我们需要判断字符串中的每个...
在C/C++编程语言中,字符串处理是一个非常基础且重要的知识点。C/C++语言本身并没有专门的字符串变量类型,而是使用字符数组来存放字符串,其中字符串的结束符是“\0”(空字符)。掌握字符与数字之间的转换对于进行...
总结,字符串转ASCII和ASCII转字符串是编程中常见的操作,主要涉及对字符和其对应的数字表示之间的转换。理解这些概念和实现方式对于理解和处理字符数据至关重要。通过学习不同编程语言中的相关函数和方法,你可以...
Java是一种广泛应用于软件开发的编程语言,而字符串处理是Java开发中的一项基本操作。在实际开发中,我们经常需要对字符串进行处理和判断,例如判断字符串中有多少字母、多少数字等。这篇文章将为大家详细介绍如何...
字符串转数字是指将字符串类型的数据转换为数字类型的数据,例如将字符串 "123" 转换为整数 123。这种转换在编程中非常常见,例如在用户输入验证、数据处理、算法实现等方面都需要进行字符串到数字的转换。 CRT ...
本篇将详细解析一个特定的汇编语言程序设计任务:“用汇编语言将字符串中的字母和数字分开存储”。这个任务不仅涉及基本的字符串处理技巧,还考验了对汇编语言流程控制、内存管理和数据操作的理解。 ### 汇编语言...
字符串是由Unicode字符组成的序列,每个字符在计算机内部通常用16位(2个字节)来表示,可以是英文、数字、标点符号,甚至是中文等多语言字符。十六进制是一种逢16进1的方式,用于表示二进制数,它使用0-9和A-F这16...
标题中提到的“1.7编程基础之字符串(30题)--题目 有链接.pdf”指明了这份资料是一本关于编程基础的题集,专注于字符串相关的编程题目,并且这些题目可以在提供的链接中找到。由于文件内容中提到了多个编程题目,我们...
在Python编程语言中,字符串加密通常用于保护敏感信息,使其在传输或存储时不被轻易解读。虽然本例中的加密方法可能并不适用于高安全性的场景,但作为初学者了解加密概念和基础实现的一个起点,它是相当实用的。我们...
2. **十六进制转字符串**:相反的过程需要先使用“十六进制到整数”函数将十六进制字符串转换为十进制,再用“整数到字符串”函数将十进制数值转化为字符串。需要注意的是,这里的“整数到字符串”可能会产生一个以...
在编程过程中,我们经常会遇到需要将从外部设备读取的字符串数据转换为实数的情况,以便进行数值计算和处理。本文将深入探讨如何在西门子PLC中实现字符串到实数的转换,并提供相关的编程技巧。 一、字符串与实数的...
在大多数编程语言中,字符串是一个字符序列,可以通过索引访问每个字符。在提取数字时,我们通常会遇到两种情况:一是连续的数字字符组成一个整数或浮点数;二是数字被其他非数字字符包围。 对于第一种情况,我们...
在汇编语言编程中,处理字符串和计数特定字符出现的次数是一项常见的任务。这个任务要求我们编写一段程序,能够区分字符串中的字母和数字,并将它们的个数分别存储到预定义的变量中。以下是对这个任务的详细解析: ...
3. **拼接结果**:将所有十六进制数字拼接成一个字符串,作为最终的结果。 在DLL文件中实现这个功能,通常会定义一个函数,接受字符串作为输入参数,返回十六进制表示的字符串。头文件(如`atoX.h`)则包含函数的...
ABB机器人在RobotStudio中进行数字与字符串相互转换是编程中常见的操作,特别是在处理用户输入或者进行数据处理时。本文将详细讲解如何在RobotStudio中利用Rapid语言进行这些转换。 首先,我们需要打开ABB的...
本文详细介绍了如何使用Java编程语言将IPv4和IPv6地址从字符串形式转换为`BigInteger`数字形式,并提供了具体的代码示例。这种方法不仅适用于IPv4地址,也适用于IPv6地址,为IP地址的处理提供了一种灵活且高效的方式...
根据给定的信息,本文将详细介绍如何通过两种方法在C#编程语言中提取字符串中的数字。 ### 一、问题背景 在处理文本数据时,我们经常需要从字符串中提取出特定的信息,比如数字。例如,在一个包含混合字母和数字的...
在处理通信数据时,我们经常需要对字符和字符串进行操作,例如将字符转换为字符串,或者从字符串中截取有效字符。以下将详细介绍在TIA博途中如何实现这些操作。 首先,字符转换为字符串的过程通常涉及到ASCII码。...
在这个名为“LabView图形化编程语言之字符串转化”的资料中,我们很显然会探讨如何在LabVIEW环境中处理和转换字符串。 字符串在LabVIEW编程中扮演着重要角色,因为它们经常用于存储数据、设置参数或显示信息。以下...
在编程领域,判断一个字符串或字符串中的一个字符是否为数字类型是常见的...综上所述,判断字符串或字符是否为数字类型,可以依据具体编程语言选择合适的方法,同时要注意处理潜在的安全风险,确保程序的稳定性和效率。