【C++PythonJava】字符处理详细解读_字符_ASCLL码_字母数字转换_算法竞赛_开发语言

news2024/9/21 0:35:13

文章目录

    • Beginning
    • 1)ASCLL 码
    • 2)大小比较
    • 2)判断数字字符
    • 3)字符、数字间的相互转换
    • End

Beginning

在 C++ 中,字符和整数有着密不可分的关系。原因就是在计算机中,字符是以一种较 ASCLL 码的整数存储的。自然,在算法竞赛或一些应用场景中,字符和整数之间的相互转换也成为一种华丽且简便的技巧。

但一旦使用不好这些技巧,就可能导致程序出现漏洞,出现运行问题。所以,本文将介绍一些基本的字符和整数之间的转换用法。望大家多多指教。

1)ASCLL 码

百度百科 上的解释:ASCII (American Standard Code for Information Interchange):美国信息交换标准代码是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。

以下是可显示字符的 ASCLL 码表:
可显示ASCLL表_32~126
以下是 ASCLL 控制字符表:
ASCLL控制字符表_0~31+127
在 C++ 语言中,可以通过强制类型转换来获取字符的 ASCLL 码:

cout << int('A'); // 输出65
cout << int(' '); // 输出32

注意:在使用 cout 时,一定要加强制类型转换,即 int(…)。不然会以整数输出;scanf 和 printf 因为有固定的类型占位符,反而没有这和问题。

在 Python 中,可以用 ord() 函数获取字符的 ASCLL 码值:

print(ord('a')) # 输出97
print(ord('+')) # 输出43

在 Java中,可以用整数 Integer 类的 valueOf() 函数进行获取:

System.out.println(Integer.valueOf('q')); // 输出113
System.out.println(Integer.valueOf('5')); // 输出53

2)大小比较

在 C++ 中,字符(char)与整数(int)比较时,会把字符自动转为整型去比较(因为字符占 1 字节,整型占 4 字节,C++默认向更宽的数据类型转换)。

所以,字符和字符、字符和整数之间都可以按照 ASCLL 码比较大小:

cout << bool('a' < 100); // 输出1(即true)
cout << bool('0' != 48); // 输出0(即false)

Pyhton 则对类型要求较为严格,如果直接用字符和数字比较,会报 TypeError: '<' not supported between instances of 'str' and 'int'。可以用 chr() 函数把整数转成字符比较,或用 ord() 函数把字符转换成整数比较:

print('a' > 'b') # 输出False
print(chr(97) < 'b') # 输出True
print(ord('a') == 98) # 输出False,'a'的ASCLL是97

在 Java 中,我们可以和 C++ 一样,直接用比较运算符来比较大小:

System.out.println('a' == 'b'); // 输出false

还可以用 Character 类的 compare() 方法对两个字符进行比较,该函数返回两个字符的差值。对于 Character.compare(c1, c2) > 0,说明 c1>c2;对于 Character.compare(c1, c2) < 0,说明 c1<c2;对于 Character.compare(c1, c2) == 0,说明 c1==c2

System.out.println(Character.compare('p', 'r')); // 输出-2,即'q'比'r'的ASCLL小2

2)判断数字字符

在 ASCLL 码表中,我们会发现,数字的 ASCLL 码都在 48~57 之间,所以可以利用这个特点来判断是否是数字字符:

C++ & Java:if(ch>=48 && ch<=57)
Python:if ch>=48 and ch<=57

我们还可以利用类型转换,判断字符的大小是否在 ‘0’ 和 '9’之间,同样可以达到效果:

C++ & Java:if(ch>='0' && ch<='9')
Python:if ch>='0' and ch<='9'

同时,许多语言都自带判断字符是否是数字的函数实现:

C++:

#include <cctype> // 或 #inlucde <ctype.h>
int isdigit(char c); // 是数字返回1,不是返回0
int isalpha(char c); // 不是字母返回0,,是大写字母返回1,是小写字母返回2

上面两个函数在不同编译器下有差别,以上是 MinGW-w64 GCC 11.4.0 64-bit 编译器的结果。

Python:

print('2'.isdigit()) #True,这是在字符串对象里的方法
print('u'.isalpha()) #True

Java:

Character.isDigit(char c); // 判断字符c是否是数字字符,是返回True,不是返回False
Character.isLowerCase(char c); // 判断c是不是小写字母,是返回True,不是返回False
Character.isUpperCase(char c); // 判断c是否是大写字母,是返回True,不是返回False
Character.isLetterOrDigit(char c); // 判断c是否是字母或数字字符,是返回True,不是返回False

3)字符、数字间的相互转换

先看一些 ASCLL 码及其对应字符之间的性质:

  1. 常见ASCII码的大小规则:数字< 大写字母 < 小写字母;
  2. 数字比字母要小。如 “7”<“F”;
  3. 数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ;
  4. 字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” ;
  5. 同个字母的大写字母比小写字母要小32。如“A”<“a” ;
  6. 几个常见字母的ASCII码大小: “A”为65;“a”为97;“0”为 48。

有了这些性质,就能得到一些规律(这里简单列举几个,读者可以自己发掘更多):

  1. 数字转字符:char ch = num + '0';
  2. 字符转数字:int num = ch - '0';
  3. 大写字母转小写字母:char lowerch = upperch + 32;
  4. 小写字母转大写字母:char upperch = lowerch + 32;

End

感谢大家的观看!字符转换永远是基础中的基础,希望大家都能熟练掌握这些技巧,让它们成为我们成功路上的垫脚石!

这里是 YLCHUP,拜拜ヾ(•ω•`)o

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1927896.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringSecurity框架【认证】

目录 一. 快速入门 二. 认证 2.1 登陆校验流程 2.2 原理初探 2.3 解决问题 2.3.1 思路分析 2.3.2 准备工作 2.3.3 实现 2.3.3.1 数据库校验用户 2.3.3.2 密码加密存储 2.3.3.3 登录接口 2.3.3.4 认证过滤器 2.3.3.5 退出登录 Spring Security是Spring家族中的一个…

C语言之qsort函数

一、qsort 1.库函数qsort qsort是库函数&#xff0c;直接可以用来排序数据&#xff0c;底层使用的是快速排序。 qsort函数可以排序任意类型的数据。 2.头文件 #include<stdlib.h> 3.参数讲解 void*类型的指针是无具体类型的指针&#xff0c;这种类型的指针的不能直接解…

Still-Moving效果惊艳!无需定制视频数据,DeepMind让文生定制视频变得简单!

文章链接&#xff1a; https://arxiv.org/pdf/2407.08674 github链接&#xff1a; https://still-moving.github.io/ Still-Moving 自定义文本生成图像&#xff08;T2I&#xff09;模型最近取得了巨大进展&#xff0c;尤其是在个性化、风格化和条件生成等领域。然而&#xff0c…

星辰计划02-独特视角的spring动态代理

承接上一文 动态代理 &#xff0c;这里探究spring 动态代理 会话1&#xff1a;spring动态代理 quick start &#x1f467;哥哥&#xff0c;哥哥&#xff0c;spring 怎么去搞动态代理的呢&#x1f468; 来来来&#xff0c;听我细细来说 quick start通过Spring的 ProxyFactory…

学习小记-Nacos的服务注册与发现原理

服务注册&#xff1a; 当一个服务实例启动时&#xff0c;它会向 Nacos 服务器注册自己的信息&#xff0c;包括 IP 地址、端口号、元数据&#xff08;如服务版本、区域信息等&#xff09;。服务实例使用 Nacos API 发送注册请求&#xff0c;Nacos 服务器接收请求并存储服务实例信…

浅聊授权-spring security和oauth2

文章目录 前言自定义授权spring security授权oauth2授权概述 前言 通常说到授权&#xff0c;就会想到登录授权、token令牌、JWT等概念&#xff0c;授权。顾名思义就是服务器授予了客户端访问资源的权益&#xff0c;那么要实现授权有几种方案呢&#xff0c;三种授权方式在公司项…

Python个性化电影推荐系统的设计与实现

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

客户端通过服务器进行TCP通信(三)

一. 对TCP的基础讲解 服务端 1. 首先创建一个套接字&#xff0c;TCP是面向字节流的套接字&#xff0c;故需要使用SOCK_STREAM 2. 然后使用bind()函数将套接字与服务器地址关联(如果是在本地测试&#xff0c;直接将地址设置为217.0.0.1或者localhost&#xff0c;端口号为1000…

Mac电脑下运行java命令行出现:错误: 找不到或无法加载主类

mac 电脑 问题复现 随手写了一个main方法&#xff0c;想用命令行操作 进入 BlockDemo.java 所在目录&#xff1a; wnwangnandeMBP wn % cd /Users/wn/IdeaProjects/test/JianZhiOffer/src/main/java/com/io/wn wnwangnandeMBP wn % ls -l total 16 -rw-r--r-- 1 wangnan …

前端框架学习之 搭建vue2的环境 书写案例并分析

目录 搭建vue的环境 Hello小案例 分析案例 搭建vue的环境 官方指南假设你已经了解关于HTML CSS 和JavaScript的中级知识 如果你刚开始学习前端开发 将框架作为你的第一步可能不是最好的主意 掌握好基础知识再来吧 之前有其他框架的使用经验会有帮助 但这不是必需的 最…

【JavaScript 算法】二分查找:快速定位目标元素

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、算法原理二、算法实现三、应用场景四、优化与扩展五、总结 二分查找&#xff08;Binary Search&#xff09;是一种高效的查找算法&#xff0c;适用于在有序数组中快速定位目标元素。相比于线性查找&#xff0c;二分查找…

【java】力扣 买卖股票的最佳时机II

文章目录 题目链接题目描述思路代码 题目链接 122.买卖股票的最佳时机II 题目描述 思路 这道题和121.买卖股票的最佳时机 有所不同&#xff0c;不同点在于&#xff0c;这道题的股票可以多次买卖(但是要在买之前先卖掉) 详细思路请看链接的文章【java】力扣 买卖股票的最佳时…

Milvus核心设计(2)-----TSO机制详解

目录 背景 动机 Timestamp种类及使用场景 Guarantee timestamp Service timestamp Graceful time Timestamp同步机制 主流程 时间戳同步流程 背景 Milvus 在设计上突出了分布式的设计,虽然Chroma 也支持分布式的store 与 query。但是相对Milvus来说,不算非常突出。…

Linux--USB驱动开发(二)插入USB后的内核执行程序

一、USB总线驱动程序的作用 a&#xff09;识别USB设备 1.1 分配地址 1.2 并告诉USB设备(set address) 1.3 发出命令获取描述符 b&#xff09;查找并安装对应的设备驱动程序 c&#xff09;提供USB读写函数 二、USB设备工作流程 由于内核自带了USB驱动,所以我们先插入一个U…

SQL中的谓词与谓词下推

在 SQL 查询中&#xff0c;谓词&#xff08;Predicate&#xff09;是用来对数据进行过滤的条件。它们决定了数据从数据库表中被选择的条件。理解和正确使用 SQL 谓词对于编写高效查询至关重要。 目录 什么是谓词&#xff1f;一个真实的故事SQL 谓词的代码示例比较谓词逻辑谓词…

服务客户,保证质量:腾讯云产品的质量实践

分享主题是“服务客户&#xff0c;保证质量”。自从20年开始&#xff0c;我们把质量提升到了一个前所未有的高度。为什么会如此重视质量呢&#xff1f;在竞争激烈和复杂的市场环境中&#xff0c;产品质量对于企业的重要性不言而喻。一旦出现了质量事故&#xff0c;对客户和企业…

SCI二区|母亲优化算法(MOA)原理及实现【免费获取Matlab代码】

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2023年&#xff0c;I Matoušov受到母亲与孩子之间的人际互动启发&#xff0c;提出了母亲优化算法&#xff08;Mother Optimization Algorithm, MOA&#xff09;。 2.算法原理 2.1算法思…

PHP中的函数与调用:深入解析与应用

目录 一、函数基础 1.1 函数的概念 1.2 函数的定义 1.3 函数的调用 二、PHP函数的分类 2.1 内置函数 2.2 用户自定义函数 2.3 匿名函数 2.4 递归函数 2.5 回调函数 2.6 魔术方法 三、函数的参数与返回值 3.1 参数传递 3.2 返回值 四、函数的高级特性 4.1 可变函…

【HarmonyOS】鸿蒙中如何获取用户相册图片?photoAccessHelper.PhotoViewPicker

【HarmonyOS】鸿蒙中如何获取用户相册图片&#xff1f;photoAccessHelper.PhotoViewPicker 前言 有同学私聊我说&#xff0c;之前的博客文章提到的没有HarmonyOS白名单帐号&#xff0c;如何在OpenHarmony Gitee开发仓里学习API接口。需要注意一个点&#xff0c;默认看到的文档…

07 物以类聚 基于特征的七种算法模型

你好&#xff0c;我是大壮。在 06 讲中&#xff0c;我们介绍了协同过滤&#xff08;CF&#xff09;算法&#xff0c;它主要通过用户行为构建用户物品共现矩阵&#xff0c;然后通过 CF 算法预测结果实现个性化推荐。其实&#xff0c;除了利用用户行为特征之外&#xff0c;我们还…