【JAVA】【字符串】十进制转换为十六进制

笔记

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

思路

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);			
		}		
	}
}

输入:100 360 16 32。运行结果为:

100 360 16 32 
0x64
0x168
0x10
0x20

你可能感兴趣的:(上机编程题学习,java,字符串)