蓝桥杯刷题整理(二)进制转换

二、基础题之转型

1.十进制转十六进制:十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有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。
  给出一个非负整数,将它表示成十六进制的形式。

上网查了一些资料,发现Integer类神通广大:

 

static intsignum(int i)
          返回指定 int 值的符号函数。
static StringtoBinaryString(int i)
          以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
static StringtoHexString(int i)
          以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
static StringtoOctalString(int i)
          以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。
 StringtoString()
          返回一个表示该 Integer 值的 String 对象。
static StringtoString(int i)
          返回一个表示指定整数的 String 对象。
static StringtoString(int i, int radix)
          返回用第二个参数指定基数表示的第一个参数的字符串表示形式。

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int a=in.nextInt();
		String b= Integer.toHexString(a);
		System.out.println(b.toUpperCase());
	}
}

 

 

2.十六进制转十进制

从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。

样例输入:FFFF;样例输出:65535

第一次用的int,NumberFormatException

输入的数比较大的话:

import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		String s = in.nextLine();
		long num = Long.parseLong(s, 16);
		System.out.println(num);
	}
}

数更大的话:用BigInteger 

import java.util.Scanner;
import java.math.BigInteger;
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		String s = in.nextLine();
		String string = new BigInteger(s, 16).toString(10);
		System.out.println(string);
	}
}

3.十六进制转八进制

问题描述
  给定n个十六进制正整数,输出它们对应的八进制数。

输入格式
  输入的第一行为一个正整数n (1<=n<=10)。
  接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

输出格式
  输出n行,每行为输入对应的八进制正整数。

 

BigInteger(String val, int radix)
          将指定基数的 BigInteger 的字符串表示形式转换为 BigInteger。
 StringtoString()
          返回此 BigInteger 的十进制字符串表示形式。
 StringtoString(int radix)
          返回此 BigInteger 的给定基数的字符串表示形式。
import java.math.BigInteger;
/*十六進制转八进制
 */
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		String[] s = new String[n];
		for (int i = 0; i < n; i++) {
			s[i] = in.next();
		}
		for (int i = 0; i < n; i++) {
			String string = new BigInteger(s[i], 16).toString(8);
			System.out.println(string);
		}
	}

}

 end.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值