版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_40688217/article/details/88649613
问题描述
十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有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
本文提供以下两种方法:
方法一:用除商取余法
用十进制数除以16 记录下商和余数
然后继续用商去除以16记录下商和余数,直到商为0
最后将余数逆序排列就可以了
代码:
import java.util.Scanner;
public class ten_sixteen {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
String s="";
char c=' ';
if(n==0) {
s="0";
}
int m;
while(n!=0) {
m=n%16;
if(m/10==1)
c=(char)(65+(m%10)); //利用ASCII码
else if(m/10==0)
c=(char)(48+m); 、、
s=c+s; //逆序输出
n=n/16; //不断除16 直到n!=0
}
System.out.println(s);
}
}
方法二:可以直接使用Integer类中的toHexString()方法来实现。
代码:
import java.util.Scanner;
public class ten_sixteen {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
System.out.println(Integer.toHexString(n).toUpperCase());
//注意:这里要加上.toUpperCase()方法,因为题中输出的字母是大写;
想要大写转换为小写用.toLowerCase()方法,这里用不到此转换为小写的方法
}
}
最后,大家如果想看Math类的常用方法可以去这篇博客