Integer.parseInt(string) 实际上是如何工作的?

2024-02-01

最近被问到这个问题,不知道答案。有人可以从高层次解释Java如何获取字符/字符串并将其转换为int。


通常这是这样完成的:

  • 初始化结果为 0
  • for each character in string do this
    • 结果 = 结果 * 10
    • 从字符中获取数字(“0”是 48 ASCII(或 0x30),因此只需从字符 ASCII 代码中减去它即可获取数字)
    • 将数字添加到结果中
  • 返回结果

Edit:如果您用正确的基数替换 10 并调整从相应字符获取数字的方法,这适用于任何基数(对于低于 10 的基数应该按原样工作,但对于更高的基数需要稍微调整 - 例如十六进制 - 因为字母与数字相隔 7 个字符)。

Edit 2:字符到数字值的转换:字符“0”到“9”的 ASCII 值为 48 到 57(十六进制为 0x30 到 0x39),因此为了将字符转换为其数字值,需要进行简单的减法。通常是这样完成的(其中 ord 是给出字符 ASCII 代码的函数):

digit = ord(char) - ord('0')

对于更高的数字基数,字母用作“数字”(十六进制中的 A-F),但字母从 65(十六进制 0x41)开始,这意味着我们必须考虑到一个间隙:

digit = ord(char) - ord('0')
if digit > 9 then digit -= 7

示例:'B' 是 66,所以 ord('B') - ord('0') = 18。由于 18 大于 9,我们减去 7,最终结果将是 11 - '数字' B 的值。

这里还要注意一件事 - 这仅适用于大写字母,因此必须首先将数字转换为大写字母。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Integer.parseInt(string) 实际上是如何工作的? 的相关文章

  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • Spring AspectJ 在双代理接口时失败:无法生成类的 CGLIB 子类

    我正在使用Spring的
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • 如何更改javaFX中按钮的图像?

    我正在使用javaFX 我制作了一个按钮并为此设置了图像 代码是 Image playI new Image file c Users Farhad Desktop icons play2 jpg ImageView iv1 new Ima
  • string.Empty 与 null。您使用哪一个?

    最近工作的同事告诉我不要使用string Empty设置字符串变量时但使用null因为它污染了堆栈 他说不做 string myString string Empty but do string mystring null 真的有关系吗 我
  • 没有 Spring 的自定义 Prometheus 指标

    我需要为 Web 应用程序提供自定义指标 问题是我不能使用 Spring 但我必须使用 jax rs 端点 要求非常简单 想象一下 您有一个包含键值对的映射 其中键是指标名称 值是一个简单的整数 它是一个计数器 代码会是这样的 public
  • 将流转换为 IntStream

    我有一种感觉 我在这里错过了一些东西 我发现自己做了以下事情 private static int getHighestValue Map
  • java.lang.IllegalStateException:提交响应后无法调用 sendRedirect()

    这两天我一直在尝试找出问题所在 我在这里读到我应该在代码中添加一个返回 我做到了 但我仍然得到 java lang IllegalStateException Cannot call sendRedirect after the respo
  • 无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]-MySQL

    我是 Hibernate 的新手 我目前正在使用 Spring boot 框架并尝试通过 hibernate 创建数据库表 我知道以前也问过同样的问题 但我似乎无法根据我的环境找出如何修复错误 休眠配置文件
  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供

随机推荐

  • 通过 awk 将频率(出现次数)添加到我的文本表中

    给定这个输入表 pac1 xxx pac1 yyy pac1 zzz pac2 xxx pac2 uuu pac3 zzz pac3 uuu pac4 zzz 我需要将频率添加到第三列 如下所示 pac1 xxx 2 3 pac1 yyy
  • 程序接收到信号SIGPIPE,管道损坏

    我写了一个基于posix套接字的客户端程序 该程序创建多个线程并且将锁定服务器 但是在 gdb 调试期间 程序给出了一个信息 错误 gdb n Program received signal SIGPIPE Broken pipe Swit
  • 日历 - 获取上个月的最后一天

    我想获取上个月的最后一天 但这似乎不起作用 Calendar cal Calendar getInstance Integer lastDay cal getInstance getActualMaximum cal DAY OF MONT
  • 如何对多个实体使用单个 JPA 规范类和方法

    我正在创建一个 Spring Boot 应用程序 其中包含产品 类别 机械 使用位置等实体 所有这些实体的共同点是它们都有一个名为 name 的 String 属性 并且可以使用 name 从 UI 中过滤 我已经编写了一个使用名称进行过滤
  • Angular - 在服务和组件中使用管道

    在 AngularJS 中 我可以使用类似于以下语法的服务和控制器内部的过滤器 管道 filter date myDate yyyy MM dd 是否可以在 Angular 中这样的服务 组件中使用管道 像在 Angular 中一样 您可以
  • 需要一些帮助来理解核心数据中的瞬态属性

    我阅读了有关瞬态属性的文档 但我无法真正理解它们的用途 如果我有这样的 NSManagedObject 自定义子类 有人可以告诉我拥有和不拥有瞬态属性之间的区别吗 interface Board NSManagedObject NSMuta
  • 在 Java 11 上编译 Android 数据绑定的 JAXB 依赖项放在哪里?

    我正在使用 Android 数据绑定 虽然事情很简单 但运行得很好 但是 一旦我添加了BindingAdapter https developer android com reference android databinding Bind
  • 在 SQL Server 中使用开始/结束块和 Go 关键字?

    何时使用该指南有哪些指导原则BEGIN and ENDSQL Server 中的关键字 另外 到底是什么GO关键字做什么 GO 就像脚本的结尾 您可以有多个 CREATE TABLE 语句 并用 GO 分隔 这是一种将脚本的一部分与另一部分
  • 聚集索引列上的非聚集索引可以提高性能吗?

    在SQL Server 2005中 查询分析器多次告诉我在已经有聚集索引的表的主ID列上创建非聚集索引 遵循此建议后 查询执行计划报告查询应该更快 为什么同一列 具有相同排序顺序 上的非聚集索引比聚集索引更快 聚集索引包含表的所有数据 而非
  • 探测扩展时出现 GET net::ERR_FAILED 错误

    有一个特定的 Chrome 扩展程序 我想从中获取一个 PNG 文件XMLHttpRequest 如果启用了扩展 我想将 load 写入控制台 如果禁用扩展 我想将 error 写入控制台 它工作正常 但如果禁用扩展程序 Chrome 会在
  • 列出 GCP 帐户/组织的所有用户

    我在 GCP 中有一个组织 其中有多个项目 有没有办法列出所有项目用户及其角色 而不必逐个项目访问项目 我正在使用gcloud projects get iam policy PROJECTNAME 但列出单个项目的用户 我有几百个 Tha
  • Javascript:无法将 href 添加到列表项

    我正在尝试将新项目添加到列表项目中 但下面的代码没有将超链接添加到我想要的列表项 有人可以告诉我出了什么问题吗 HTML div ul li Ut enim ad minim veniam li li Excepteur sint occa
  • “Angular cdk Drag drop”用于将列表中的项目拖放到容器中(无序)

    我知道 cdk 拖放可以很好地处理列表 并且有很多示例 但我想做的是 一侧是列表 另一侧是容器 容器中的物品应该位于容器中的任何位置 并且可以由 x 和 y 轴固定 因此 当从列表中拖放到容器中的某个 x y 处时 该项目应保持该位置 请帮
  • ASP MVC5 身份用户抽象

    我想使用默认的 Identity 2 提供程序构建 N 轮胎 Web 应用程序 因此 我的数据层包含带有模型定义的纯 C 类 没有任何外部依赖性 但如果不添加 AspNet Identity 引用 就不可能将某些类链接到我的应用程序用户 我
  • 如何获取 iOS 框架测试目标并在虚拟应用程序中运行它?

    所以我遇到了一个问题 我的框架需要访问KeyChain 很好 但是在模拟器中运行时似乎失败了 挖掘它似乎是一个已知的问题xctest在这里做错事了 公平地说 错误是会发生的 在 Apple 开发者论坛中 对此进行了讨论 Right 这是库测
  • 验证两个表的唯一性

    我有一个Company and Archive具有相同表结构的模型 两种型号都有一个validates name uniqueness gt true验证 在 company rb 文件中 我在设置自定义验证时遇到问题 当我将记录添加到Co
  • Ruby 的 Object#taint 和 Object#trust 方法是什么?

    我正在阅读有关 Ruby 字符串方法的内容docs http www ruby doc org core 1 9 3 String html并遇到了这些方法 taint trust untaint untrust 我不知道它们是做什么的 我
  • BottomNavigationView:如何删除连字符标签

    实现 5 项 BottomNavigationView 始终显示标签 我使用以下方法
  • 如何在 extjs 中的网格页脚中添加总行数

    我想在网格页脚中添加总行数 我有商店中可用的总行记录 在网格中 用户选择降序排列 总计行显示为第一行 谁能告诉我如何避免这种情况 我将解释我的完整问题 例如 我有像 Target Target1 Target2 这样的网格视图 是从网络服务
  • Integer.parseInt(string) 实际上是如何工作的?

    最近被问到这个问题 不知道答案 有人可以从高层次解释Java如何获取字符 字符串并将其转换为int 通常这是这样完成的 初始化结果为 0 for each character in string do this 结果 结果 10 从字符中获