问题描述
十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有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
Java 十进制转十六进制?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
5条回答 默认 最新
- AgoniAngel 2016-02-11 04:34关注
蓝桥杯题目。
如果是调用封装好的方法:import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); long number = sc.nextLong(); String arry = Long.toHexString(number);//十进制转十六进制 arry = arry.toUpperCase(); System.out.println(arry); } }
如果自己实现的话,通过建立StringBuilder对象 和append()方法,连接每位16进制数,其中获取到的16进制字符串为逆序的16进制字符串,需要进行逆序操作,最终转换为16进制字符串:
import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); long number = sc.nextLong(); int remainder = 0; int len; StringBuilder st = new StringBuilder(); do{ remainder = (int) (number % 16); number = number / 16; switch (remainder) { case 10: st.append("A"); break; case 11: st.append("B"); break; case 12: st.append("C"); break; case 13: st.append("D"); break; case 14: st.append("E"); break; case 15: st.append("F"); break; default: st.append(remainder); break; } }while(number >= 1); len = st.toString().length(); char [] arry = st.toString().toCharArray(); st = new StringBuilder(); for(int i = len - 1; i >= 0; i--){ st.append(arry[i]); } System.out.println(st); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 1