Java试题:进制转换

news/2025/2/23 10:03:02

活动发起人@小虚竹 想对你说:

这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。我们诚挚邀请你参加为期14天的创作挑战赛!

提醒:在发布作品前,请将不需要的内容删除。

一、题目要求

请问十六进制数 2021ABCD 对应的十进制是多少?

二、代码展示

java">import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = "2021ABCD"; // 可以改为从输入读取,例如:String str = scan.nextLine();
        long sum = 0;
        
        for(int i = str.length() - 1; i >= 0; i--){
            char c = str.charAt(i);
            int value;
            
            if(c >= '0' && c <= '9'){
                value = c - '0';
            }
            else if(c >= 'A' && c <= 'D'){
                value = c - 'A' + 10;
            }
            else{
                // 处理无效字符(可选)
                System.out.println("无效的十六进制字符: " + c);
                scan.close();
                return;
            }
            
            sum = sum * 16 + value;
        }
        
        System.out.println(sum);
        scan.close();
    }
}

    }
}

核心代码解释:

  1. 循环遍历:从字符串的最后一个字符开始,向前遍历每个字符。


   2. 获取字符:`char c = str.charAt(i);` 获取当前索引 `i` 的字符。


   3. 计算字符对应的数值:
     - 如果字符是 `'0'` 到 `'9'`,则 `value = c - '0';` 将字符转换为对应的整数值。
     - 如果字符是 `'A'` 到 `'D'`,则 `value = c - 'A' + 10;` 将字母转换为对应的十进制值(A=10, B=11, ..., D=13)。


   (1)字符 `c`:
       - `c` 是一个字符变量,通常是一个字母(如 `'A'`, `'B'`, ..., `'F'`)。
       - 在C语言中,字符实际上是以ASCII码存储的。例如:
       - `'A'` 的ASCII码是 `65`
       - `'B'` 的ASCII码是 `66`
  

  (2)表达式 `c - 'A'`:
          - 这部分计算的是字符 `c` 相对于 `'A'` 的偏移量。
          - 例如:
          - 如果 `c = 'A'`,那么 `c - 'A' = 65 - 65 = 0`
          - 如果 `c = 'B'`,那么 `c - 'A' = 66 - 65 = 1`
   
          - 这样,每个字母相对于 `'A'` 的偏移量对应其在字母表中的位置。

  (3)加上 `10`:
          - 由于在十六进制中,`'A'` 对应 `10`,`'B'` 对应 `11`,依此类推。
          - 因此,通过将偏移量加上 `10`,可以将 `'A'` 转换为 `10`,`'B'` 转换为 `11`,等等。
           - 例如:
              - `'A'` 的偏移量是 `0`,加上 `10` 后得到 `10`
              - `'B'` 的偏移量是 `1`,加上 `10` 后得到 `11`
   
     - 如果字符不在上述范围内,输出错误信息并终止程序。


   4. 累加到总和:`sum = sum * 16 + value;` 将当前位的值加入总和。这里使用 `16` 是因为我们在处理十六进制数。
 


http://www.niftyadmin.cn/n/5863291.html

相关文章

一、计算机等级考试——题库

&#xff08;1&#xff09;选择题 &#xff08;2&#xff09;基本操作题 &#xff08;3&#xff09;上网题 &#xff08;4&#xff09;文字题 &#xff08;5&#xff09;表格题 &#xff08;6&#xff09;演示文稿 二、计算机等级考试——标准评分 &#xff08;1&#xff09;选…

1.1 go环境搭建及基本使用

golang下载地址&#xff1a; Download and install - The Go Programming Language (google.cn) 验证安装是否成功&#xff1a; go version 查看go环境 go env 注意&#xff1a;Go1.11版本之后无需手动配置环境变量,使用go mod 管理项目&#xff0c;也不需要把项目放到GO…

【服务器与本地互传文件】远端服务器的Linux系统 和 本地Windows系统 互传文件

rz 命令&#xff1a;本地上传到远端 rz 命令&#xff1a;用于从本地主机上传文件到远程服务器 rz 是一个用于在 Linux 系统中通过 串口 或 SSH 上传文件的命令&#xff0c;它实际上是 lrzsz 工具包中的一个命令。rz 命令可以调用一个图形化的上传窗口&#xff0c;方便用户从本…

HBase与传统数据库的区别:为什么选择它来处理大数据?

HBase与传统数据库的区别&#xff1a;为什么选择它来处理大数据&#xff1f; 数据太多&#xff0c;传统数据库扛不住了&#xff1f; 你有没有遇到过这样的情况&#xff1a;你的公司业务发展迅速&#xff0c;数据量呈指数级增长&#xff0c;传统的数据库系统&#xff08;如MyS…

从零开始搭建你的第一个HBase项目:实战经验分享

从零开始搭建你的第一个HBase项目&#xff1a;实战经验分享 数据洪流中的你&#xff0c;准备好了吗&#xff1f; 在大数据时代&#xff0c;数据量的增长速度令人咋舌。面对海量的数据&#xff0c;如何高效地存储、管理和分析成为了一个亟待解决的问题。今天&#xff0c;我们将…

游戏客户端架构设计与实战:从模块化到性能优化

一、架构设计原则 模块化分层 采用「MVC事件总线」架构&#xff0c;将客户端划分为&#xff1a; Model层&#xff1a;管理游戏数据&#xff08;如角色属性、配置表&#xff09;View层&#xff1a;UI界面与交互组件&#xff08;推荐NGUIMVC模式&#xff09;Controller层&#xf…

Jenkins 构建 Unity 打包 .apk 同时生成 .aab

Jenkins 构建 Unity 打包 .apk 同时生成 .aab Android App Bundle简称 AAB&#xff0c;想了解更多关于 AAB 的知识&#xff0c;请看官网 https://developer.android.google.cn/guide/app-bundle/faq?hlzh-cn APK 打包部分在复用上一篇 Jenkins 构建 Unity打包APK 一、新建一…

C++17中std::chrono::duration和std::chrono::time_point的舍入函数

文章目录 1. std::chrono::duration的舍入函数1.1 floor1.2 ceil1.3 round 2. std::chrono::time_point的舍入函数2.1 示例 3. 舍入函数的应用场景3.1 时间测量3.2 数据记录3.3 时间同步 4. 总结 在C17中&#xff0c; std::chrono库提供了一组强大的时间处理工具&#xff0c;包…