十进制转十六进制Java实现(蓝桥杯练习题)

这是接着上面几篇博客的进制转化,这次是比较简单的十进制转十六进制,写Java代码时,以为十几分钟就写好了,结果有很多东西都没有考虑到,所以还是打算以博客的方式记录下来。

转换思路:我们平时进行十进制转其他进制,采用的时除K取余的方法,那这次编码我们也采用这种方法。

编码思路:对十进制数进行多次除十六取余,并把余数用一个String Builder存放起来,当商为0时就停止。然后把String Builder逆序输出,

主要变量: remainder 余数 quotient 商 sixteen String Builder对象存放十六进制数

java编码实现:


import java.util.Scanner;

//十进制转十六进制
public class Main_tentosixteen {
	public static void tentosixteen(int number) {
		int remainder=number%16;     //余数
		int quotient=number/16;          //商
		StringBuilder sixteen=new StringBuilder();
		while(quotient!=0){          //主要就是完成除k取余的工作
			getParament(remainder,sixteen);
			remainder=quotient%16;
			quotient=quotient/16;
		}
		getParament(remainder,sixteen)     //注意!当quotient为0时;我们还要将上一次的remainder放入到sixteen字符串中。
		int len=sixteen.length();
		for(int i=0;i

对上面代码进行几点说明:
1.我用的是StringBuilder来存放十六进制数,因为StringBuilder更适用与对字符串的多次修改添加操作,而String则会消耗系统空间。
2.将remainder添加到sixteen字符串中的操作有俩处 ,第一是在while循环里添加,二是在循环结束时添加(我第一次就忘了)。

我的改bug过程:
1.首先没有考虑到 十进制数一开始就比16小的情况,改过来了之后,忘了10<=remainder<=15的数用ABCDEF来表示。
2.在while循环结束时忘了将remainder添加到sixteen里面去了(写着写着博客,又去改了我代码,力求到精简)。

你可能感兴趣的:(进制转换)