蓝桥杯基础-014-Decimal_To_Hexadecimal

题意

输入一个整数n(0 <= n <= 2147483648)

(其中java中 int [ -2^31 , 2^31 ] <- 32 = 4*8)&& 2^31 = 2147483648)->即n 为 int 即可

代码

import java.util.Scanner;


public class Main {

	public static void main(String[] args) {

		char[] HexDecimalAlphabet = new char[16];
		char[] A_F_Alphabet = {'A','B','C','D','E','F'};
		char[] Stack = new char[8];
 		for (int i = 0; i < HexDecimalAlphabet.length; i++) {
			if(i<10)
				HexDecimalAlphabet[i] = (char)((int)'0'+i);
			else
				HexDecimalAlphabet[i] = A_F_Alphabet[ i%10 ];
 		}

 		Scanner keyin = new Scanner(System.in);
 		int n = keyin.nextInt();
 		int cnt = 0;
 		do{
 			Stack[cnt] = HexDecimalAlphabet[n % 16];
 			cnt++;
 			n = n / 16;
 		}while( n != 0);
 		for (int i = cnt - 1; i >= 0; i--) {
			System.out.print(Stack[i]);
		}
	}
}
Summary

i) 先建立HexadecimalAlphabet对映表; 

ii ) 对n进行取位数操作(1.n MOD 16, 2. n /= 16,3. while(n != 0) <-欧几里得算法) ; 

iii) ch = HexdicimalAlphabet[sub (= MOD所得数)] && 压栈(或记入数列) ; 

iv) 出栈(逆序输出数列)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值