char(数字) 转换 int

2023-05-16

         刷题遇到一个考点是 char型数字 转 int 进行计算的问题。一看就会,一做就错,显然是在这里的认识薄弱了。将一番搜索的结果记录下来,以备再忘来打脸。

        char的定义参考:Java基本数据类型之char。

        首先,char  跟 int 这两种类型可以直接互转:

char ch1 = 'a';
int i = ch1;
char ch2 = (char)i;

         那么面对 char in = ‘2’  需要转成 int 做计算,那么很自然想到把char 型变量直接赋给 int 型就能计算 了。

char in = '2';
int iVar = in;
System.out.println(in);
System.out.println(iVar);

//输出:
// 2
// 50

        想当然的做法果然错了:期望取出来的 int 2,实际却是 int 50。

        当 char 直接 赋给 int 时,实际上是把 char 变量的ASCII 码赋给 int类型,因此取出char 变量的数值不能通过直接转换成int的方法实现。

方法一:

        利用char变量使用 ASCII进行算术运算这一特征,可以得到一种间接计算获取数值的方法。

char ch1 = '8';
int iVar = ch1 - '0';
System.out.println(iVar);

//输出
// 8

'0'-'9'  ASCII 为 48-57,且顺序一致,因而char数字之间的差值等于数字之间的差值 。

System.out.println('9'-'1' == 9-1);	//true
System.out.println('8'-'0' == 8);	//true

方法二:

        使用 char 包装类Character提供的方法;

char ch1 = '8';
Character.getNumericValue(ch1);    // 8
//Character.digit(ch1,10);    // 8

方法三:

        通过int 包装类 Integer 。

char ch2 = '8';
int i = Integer.parseInt(String.valueOf(ch2));    // 8

方法一最快,方法三慢。测试代码如下:

    @Test
	public void test(){
		int circle = 100000;
		StopWatch watch = new StopWatch();
		char ch1 = '8';
		watch.start("task1");
		int count = 0;
		while (count++ < circle){
			int i = ch1 - '0';
		}
		watch.stop();
		watch.start("task2");
		count = 0;
		while (count++ < circle){
			int i = Character.digit(ch1,10);
		}
		watch.stop();

		watch.start("task3");
		count = 0;
		while (count++ < circle){
			int i = Integer.parseInt(String.valueOf(ch1));
		}
		watch.stop();
		System.out.println(watch.prettyPrint());
	}



结果:
---------------------------------------------
ns         %     Task name
---------------------------------------------
002761400  010%  task1
003343100  012%  task2
022454000  079%  task3

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

char(数字) 转换 int 的相关文章

  • int 到 long 赋值

    我一直在尝试这个 int 和 long 转换 我尝试分配一个int变量为along多变的 代码如下 public static void main String args int i 1024 long j i long k i i i i
  • mysql 中 int(11) 列的大小是多少(以字节为单位)?

    柱子的尺寸是多少int 11 在mysql中以字节为单位 该列中可以存储的最大值 An INT无论指定什么长度 都将始终为 4 个字节 TINYINT 1 字节 8 位 SMALLINT 2 字节 16 位 MEDIUMINT 3 字节 2
  • 在C#中,如何检测一个字符是否是非ASCII字符?

    我想在 C 中检查 char 是否包含非 ASCII 字符 检查特殊字符的最佳方法是什么 例如志 or ASCII 范围为 0 127 因此只需检查该范围 char c a or whatever char you have bool is
  • 运算符“==”不能应用于“int”和“string”类型的操作数

    我正在编写一个程序 我想到了一个数字 然后计算机猜测了它 我一边尝试一边测试它 但我不断收到不应该出现的错误 错误是主题标题 我使用 Int Parse 来转换我的字符串 但我不知道为什么会收到错误 我知道它说 不能与整数一起使用 但我在网
  • 如何将 int 作为“void *”传递给线程启动函数?

    我最初有一个用于斐波那契变量数组的全局变量 但发现这是不允许的 我需要进行基本的多线程处理并处理竞争条件 但我无法在 pthread 创建中将 int 作为 void 参数提供 我尝试过使用常量指针 但没有成功 由于某些奇怪的原因 void
  • PHP 中 (int) $_GET['page'] 是什么意思?

    我试着抬头看 int 但只能找到该函数的文档int 在 PHP 手册中 有人可以向我解释一下上面的代码是做什么的 以及它到底是如何工作的吗 它将 至少尝试 将变量的值转换为整数 如果有字母等 前面会转成0
  • 将 int 和 const int 转换为 float 时的不同结果

    谁能解释为什么 int 和 const int 给出不同的结果 转换为 float 并用于浮点数学时的结果 参见 例如这段代码 int tmain int argc TCHAR argv int x 1000 const int y 100
  • mysql查询where条件比较char字段与int 0的一些现象

    有一桌 root localhost test 05 35 05 gt desc t Field Type Null Key Default Extra id int 11 NO PRI NULL auto increment studio
  • java中如何重新初始化int数组

    class PassingRefByVal static void Change int pArray pArray 0 888 This change affects the original element pArray new int
  • 将 char* 转换为字符串 C++

    我知道字符串的起始地址 例如 char buf 和最大长度int l 字符串的 即字符总数小于或等于l 获取值的最简单方法是什么string来自指定的内存段 换句话说 如何实现string retrieveString char buf i
  • 计算 Int32 中的前导零

    如何计算一个数组中的前导零Int32 所以我想做的是写一个函数 如果我的输入是 2 它返回 30 因为在二进制中我有000 0000000000010 NOTE使用 dotnet core gt 3 0 看here https stacko
  • C# Console.WriteLine 将 Char 类型打印为 Integer [重复]

    这个问题在这里已经有答案了 我不明白为什么打印 char 数据类型一次为 char 另一次为整数 static void Main string args char x A int i 0 Console WriteLine x A Con
  • 检测日语字符输入和“Romajis”(ASCII)

    我希望能够检测到用户何时 输入日语字符 汉字或假名 输入罗马字符 仅限 目前我正在使用这样的 ASCII 范围 C 语法 string searchKeyWord Console ReadLine var romajis from c in
  • 负字符值JAVA

    为什么会出现以下情况 char p 0 p System out println p result 65535 为什么不给出编译错误或运行时异常 我预计它是因为字符不能为负数 相反 它从颠倒开始倒数 提前致谢 为什么不给出编译错误或运行时异
  • 如何反转无符号整数的 4 个字节? [复制]

    这个问题在这里已经有答案了 我试图通过使用 和 以及按位 AND 和 OR 和 来反转无符号整数 但不知道如何执行此操作 我已经拥有的 int main int argc char argv unsigned int getal scanf
  • 在 Swift 3 中,当结果变得过高时如何计算阶乘? [复制]

    这个问题在这里已经有答案了 我编写了这个函数来返回给定数字的阶乘 func factorial n Int gt Int if n 0 return 1 else return n factorial n 1 print factorial
  • C-为什么char c=129会转换成-127?

    如果我们分配 128到 char 变量 然后将其转换为 128因为二进制等价 10000000 first bit tells sign 二进制等价于129 is 10000001 它将转换成什么值 字符c 129 谢谢 S 实际上有几种可
  • 寻找嵌套列表中的最低值?

    我正在尝试编写一个函数 它接受一个列表并可以打印该列表中的最小整数 现在我试图弄清楚在嵌套列表中该怎么做 如果最低数字位于这些嵌套列表之一中 那么总的来说它将打印该数字 我的代码在这里 def listMin list2 3 4 2 99
  • Java中char数组的默认值是多少?

    如果我像这样分配字符数组 char buffer new char 26 它分配的默认值是什么 我尝试打印它 但它只是一个空字符 System out println this is what is inside gt buffer 1 t
  • 为什么 Go 中只有 int 而没有 float?

    在 Go 中 有这样的类型int这可能相当于int32 or int64取决于系统架构 我可以声明一个整数变量而不用担心它的大小 var x int 为什么没有这个类型float 这相当于float32 or float64取决于我的系统架

随机推荐

  • ROS下上位机和stm32单片机通信

    1 需要实例化串口节点建立监听者listener和发布之publisher 2 上位机通过游戏手柄发布自定义消息类型control int64 mode 手柄模式切换 int64 lidar 雷达数据 int64 gamePad x 控制前
  • 奇偶校验码

    偶校验为例 xff1a 例图中 xff0c 下划线为校验位 xff0c 其余为信息位 检错步骤如下 xff1a 1 根据信息位算出校验位 xff08 通过异或运算 xff1a 相同为0 xff0c 不同为1 xff09 xff1a 得出校验
  • C++中#define和const的区别

    一 define是预处理指令 xff08 pre processor directive xff09 而const是关键字 define用于给一些值定义名称 字符串 xff0c 这样定义的字符串在C C 43 43 中称为宏定义 xff0c
  • select函数实现tcp服务器与客户端随时收发

    服务器 include lt stdio h gt include lt sys types h gt include lt sys socket h gt include lt arpa inet h gt include lt neti
  • STM32F10X库函数逻辑

    define PERIPH BASE unsigned int 0x40000000 定义外围总线基地址 define APB1PERIPH BASE PERIPH BASE xff09 APB1总线开始与外围总线基地址 define AP
  • STM32F10x外部中断EXTI

    目录 一 EXTI是什么 xff1f 二 使用方法 1 功能框图及寄存器 2 库函数编程 总结 提示 xff1a 以下是本篇文章正文内容 xff0c 下面案例可供参考 一 EXTI是什么 xff1f EXTI External interr
  • QT + OpenGL + FFmpeg写的一个全景视频播放器

    临时被分配了一个任务 写一个C 43 43 版本的全景视频播放器 网上搜了搜 基于前辈的基础上 写的差不多了 测试视频源是用ffmpeg拉RTSP的流 最终是要嵌入到别的一个视频播放器模块 所以解码这块我不用太关注 只要实现渲染就可以了 效
  • 15 侥幸:在随机性面前处变不惊

    引言 之前讲过的量化思维 xff0c 已经有概率思维的影子了 xff0c 开始学着用数字提高认识世界的分辨率 现在将继续加深对概率的理解 xff0c 来探讨随机性 它解决的人生难题是 xff1a 我们时常因为心存侥幸而失败 在随机的世界里
  • 【无人驾驶】自动驾驶领域有哪些岗位可选?

    导读 想要进入自动驾驶这个领域 xff0c 便首先去调查了下这个领域的岗位 xff0c 希冀能从中找出自己最感兴趣且匹配度也比较高的方向 废话不多说 xff0c 见下 下图为自动驾驶方向的所有岗位 xff0c 总量的来说 xff0c 方向可
  • 01_搭建百度apollo环境实操可用

    搭建百度apollo环境 0 前言1 目标2 方法3 Apollo环境搭建3 1 CPU版3 1 1前置依赖硬件条件3 2 GPU版前置依赖软件1 安装 Ubuntu 18 042 安装 GIT3 安装 Docker 引擎 3 1 3克隆
  • 02_两小时了解自动驾驶

    02 两小时了解自动驾驶 目标你将学到什么什么是无人驾驶无人驾驶的运作方式参考车辆与硬件平台开源软件架构仿真环境地图简介高精地图与传统地图地图与定位 感知 规划的关系高精地图定位简介GNSS RTK惯性导航激光雷达定位视觉定位融合定位感知简
  • PCA9555的使用个人总结

    1 德州仪器PCA9555 简化PCB布线 xff0c 对处理器有限的IO口进行补充 2 带中断 xff0c 不带重启 3 24 引脚的CMOS器件 xff0c 提供I2C SMBus16位通用并行 xff08 GPIO xff09 的扩展
  • stm32掉电前的数据存储到flash

    对FLASH 的操作 FLASh 必须是先擦 后 写 下面的函数是分析案例 void FLASH WriteByte u32 addr u16 flashdata1 FLASH Status FLASHstatus 61 FLASH COM
  • SPI对外部w25Q64的读写

    SPI 1 SPI是串行外围设备接口 SPI的接口主要应用在EEPROM xff0c FLASH xff0c 实时时钟 xff0c AD 转换器 xff0c 还有数字信号处理器和数字信号 解码器之间 2 SPI xff0c 是一种高速的 x
  • Qt实战开发-仪表盘制作

    仪表盘制作 相关的基础知识 QPainter用来执行具体的绘图相关的操作 xff0c 用来画点 xff0c 线 xff0c 填充 xff0c 变换 xff0c alpha 阿尔法通道 xff08 透明度 xff09 Appha的值越大 xf
  • Qt实战开发-数字软键盘

    开发的思路 布局键盘界面每一个button对应一个槽函数把输入的字符返回到点击处的文本编辑框 开发过程首先定义功能button xff0c 在头文件中定义 QString getText QPushButton span class hlj
  • Qt图形视图框架封装-拿来就用

    简述 图形视图 xff08 Graphics View xff09 提供了一个平台 xff0c 用于大量自定义2D图元的管理与交互 xff0c 并提供了一个视图部件 xff08 view widget xff09 来显示可以缩放和旋转的图元
  • 带参数的宏定义

    带参数的宏定义的一般形式如下 xff1a define lt 宏名 gt xff08 lt 参数表 gt xff09 lt 宏体 gt 其中 xff0c lt 宏名 gt 是一个标识符 xff0c lt 参数表 gt 中的参数可以是一个 x
  • QT 视图(View)/委托(Delegate)/ 模型(Model)/项(Item) 之间的关系

    引言 在学习Qt 中此部分的使用是界面自定义出美观的重要部分 xff0c 熟练的使用 xff0c 可以制作出很好的效果 xff0c 在此梳理一下他们的关系 Model View xff08 模型 视图 xff09 视图 xff08 View
  • char(数字) 转换 int

    刷题遇到一个考点是 char型数字 转 int 进行计算的问题 一看就会 xff0c 一做就错 xff0c 显然是在这里的认识薄弱了 将一番搜索的结果记录下来 xff0c 以备再忘来打脸 char的定义参考 xff1a Java基本数据类型