思路
1.使用字符数组存储十进制数字
2.从个位开始,利用/16及%16,更新当前number及余数,注意处理16进制的10-15与A-F的转换。
3.因为需要反转字符串,所以建立字符串缓冲池存储。
4.注意十六进制的固定格式是 开头必加上0X。
代码
package leetcode;
import java.util.Scanner;
public class 进制转换_10转16 {
public static void main(String[] args) {
//十进制转为16进制
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
int number = sc.nextInt();//获取输入的数字
char[] ch= new char[(number + "").length()];//获取数int类型字位数的方法
int nindex = 0;//字符串数组更新的位置
while(true) {
int m = number/16;//减掉余数
int k = number%16;//取余
if(k == 10) {
ch[nindex] = 'A';
}
if(k == 11) {
ch[nindex] = 'B';
}
if(k == 12) {
ch[nindex] = 'C';
}
if(k == 13) {
ch[nindex] = 'D';
}
if(k == 14) {
ch[nindex] = 'E';
}
if(k == 15) {
ch[nindex] = 'F';
}
if((k>=0)&&(k<10)) {//如果k为0-9
ch[nindex] = (char)('0'+k);//技巧:将数字转为char形式存入char[]字符串数组ch
}
nindex++;//更新字符串数组位置(注意是从个位开始存入,结果最重要反转
if(m == 0) break;//如果这个数已经为0,则跳出循环
number = m;//如果m还没为0,则更新number
}
StringBuffer sb = new StringBuffer();//建立字符串缓冲池sb
sb.append(ch, 0, nindex);//将ch中从索引0开始一直到index-1的字符加入sb
//注意sb.append(char[] str,int offset,int len)方法和sb.append(String str,int start,int end)的区别
sb.reverse();//反转字符串缓冲池
String ans = "0x";//十六进制固定格式:开头必有0x
ans = ans + sb.toString();
System.out.println(ans);
}
}
}
笔记
1.将数字int转为字符形式char。
int k = 5;
char n = (char)('0' + k);//将数字转为字符格式
char m = (char)('k');
char w = 'k';
System.out.println(n);
System.out.println(m);
System.out.println(w);
运行结果:
5 k k
2.StringBuffer的append(a,b,c)方法
(1) sb.append(char[] str, int offset, int len)
将字符数组从索引offset开始的len长度的字符加入sb。
(2) sb.append(String s, int start, int end)
将字符串s从索引start开始到索引end(不包括end)加入sb。
public class StringBuffer_append方法 {
public static void main(String[] args) {
StringBuffer sb1 = new StringBuffer("Hard ");
StringBuffer sb2 = new StringBuffer("Hard ");
char[] ch = new char[]{'W','a','x','w','o','r','k','s'};
sb1.append(ch,3,4);
System.out.println("第一个位置为字符数组名时,结果为:" + sb1);
String s = "Waxworks";
sb2.append(s,3,4);
System.out.println("第一个位置为字符串时,结果为:" + sb2);
}
}
运行结果:
第一个位置为字符数组名时,结果为:Hard work 第一个位置为字符串时,结果为:Hard w

京公网安备 11010502036488号