10进制转16进制

news/2025/3/19 4:19:04/

问题描述
  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
  给出一个非负整数,将它表示成十六进制的形式。
输入格式
  输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647
输出格式
  输出这个整数的16进制表示
样例输入
30
样例输出
1E

NO.1
看到题目,想法便是,题目输入的测试数据没有超出int型的范围,那就直接转16进制,代码如下:

import java.util.Scanner;/** * @author 作者 : Cactus* @version 创建时间:2018-2-20 下午05:21:19 */
public class Main {public static void main(String [] args){Scanner sc = new Scanner(System.in);int a = sc.nextInt();String s = Integer.toHexString(a);System.out.print(s);}}

测评结果如下:
这里写图片描述

错的莫名奇妙,于是我就看了锦囊提示:
这里写图片描述

NO.2
对测试数据依次取余,详细代码如下:

import java.util.Scanner;/** * @author 作者 : Cactus* @version 创建时间:2018-2-20 下午05:21:19 */
public class Main {public static void main(String [] args){Scanner sc = new Scanner(System.in);int a = sc.nextInt();String s = band(a);System.out.print(s);}private static String band(int a){int part_result = a,remainder,temp;String s = "",str;if(a == 0){s = "0" + s;return s;}while(part_result != 0){temp = part_result;part_result = part_result / 16;remainder = temp % 16;if(remainder > 10){switch(remainder){case 10:s = "A" + s;break;case 11:s = "B" + s;break;case 12:s = "C" + s;break;case 13:s = "D" + s;break;case 14:s = "E" + s;break;case 15:s = "F" + s;break;default:break;}}else{s = remainder + s;}};return s;}}

测试结果如下:
这里写图片描述

竟然还是有一个错误。

NO.3
想不通,于是我上网查看了别人的解法。
发现了自己的错误,其实一开始的想法便是对的,只是题目的细节没有注意到,16进制的结果,字母需为大写。
于是提交代码如下:

import java.util.Scanner;/** * @author 作者 : Cactus* @version 创建时间:2018-2-20 下午05:21:19 */
public class Main {public static void main(String [] args){Scanner sc = new Scanner(System.in);int a = sc.nextInt();sc.close();System.out.print(Integer.toHexString(a).toUpperCase());}}

测试结果如下:
这里写图片描述

教训:审题务必要细心!!!


http://www.ppmy.cn/news/312126.html

相关文章

Win7安装CAD出现错误1606 最简单的解决方法

关于很多使用win7系统的网友在安装CAD的时候&#xff0c;都会遇到1606错误&#xff0c;网上的一些解决方法很不正规&#xff0c;或者没有办法解决方案&#xff0c;本站通过技术员验证&#xff0c;收集到了一个比较正确的解决方案。6个步骤简单帮你解决 1、新建记事本。 2、将以…

【你好,windows】win10 1709 X86X64(16299.1029)专业纯净版2021.4.10

1、最近群里有人找16299.1029版&#xff0c;制作母盘来自uup下载的16299.15.1709专业版&#xff08;原版下载地址https://uup.rg-adguard.net/&#xff09;&#xff0c;需要其他版本可以自行转化下。打补丁包含&#xff08;KB4489886累积更新、KB4486153&#xff08;.net 4.8&a…

java 1603,win10系统安装软件提示功能传送错误1603的处理方法

有关win10系统安装软件提示功能传送错误1603的操作方法想必大家有所耳闻。但是能够对win10系统安装软件提示功能传送错误1603进行实际操作的人却不多。其实解决win10系统安装软件提示功能传送错误1603的问题也不是难事&#xff0c;小编这里提示两点&#xff1a;1、开始 - 运行(…

2021 1.16

第一节 基本框架 #include using namespace std; int main() { int n,m ; cin>>n>>m; swap(n,m); cout <<n<<’’<<m; return 0; } C上可以用C 只需要将 .h变成c 列 #include<math.h>#include Endl 换行符/n String类 #include String 一…

十六进制转十进制数

/*** 十六转十进制&#xff08;位权法&#xff09;* <p>* 如&#xff1a;十六进制数&#xff1a;6A,-------转换为十进制数是&#xff1a;6 * 161 &#xff08;A换成10&#xff09;100 96 1 97* <p>* 十六进制数&#xff1a;FFF&#xff0c;--------转换为十进制…

c 十进制数转十六进制

有3种方式实现&#xff0c;其中两种是使用系统函数&#xff0c;另一种是直接自己编写。 使用系统函数实现要加入#include <stdlib.h>&#xff0c;自己编写则不需要这个头文件。 下面的代码就是3种方式的实现&#xff0c;包括2位的整数和任意整数&#xff08;2的31次方以内…

Windows 10 周年更新版 1607

微软短期内不会像以往那样每隔几年就推出新版本的Windows操作系统了&#xff0c;而是将Windows 10作为一个持续服务来对待。说人话就是&#xff0c;微软会在Windows 10的更新补丁中不断加入新功能&#xff0c;不再像以前那样不断地开发新版本的Windows操作系统了。这是好事&…

10进制转换为16进制

十进制小数转换为16进制小数可采用乘16取整法&#xff0c;即&#xff1a; 十进制小数转R进制小数&#xff0c;方法为乘R取整&#xff0c;每次乘以相应之后基数后取结果的整数部分即可。需要注意的是并非所有的十进制小数都能完全转化为R进制小数&#xff0c;这时就需要取近似值…