在本节内容,我们主要解释三道题:十六进制转八进制、十六进制转十进制和十进制转十六进制。
1、十六进制转八进制
问题描述
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由0~9,大写字母A-F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
【注意】
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
**【**提示】
先将十六进制数转换成二进制数,再把二进制数转换成八进制
题目分析
1、接收所输入的正整数n
2、使用 Long.valueOf(参数) 将参数转换成 long 的包装类 Long
3、该对象中保存了用第二个参数提供的基数进行解析时从指定的 String 中提取的值。最后返回一个 Integer 对象( Integer 是Java中 int 基本数据类型的封装类)
参考代码
package Java.practice.homework;
import java.util.Arrays;
import java.util.Scanner;
public class Homework02
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
String a = scanner.nextLine();
System.out.print(Long.valueOf(a,16);
}
}
2、十六进制转十进制
问题描述
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535
题目分析
1、接收所输入的正整数n
2、使用 Long.valueOf(参数) 将参数转换成 long 的基本数据类 Long
3、该对象中保存了用第二个参数提供的基数进行解析时从指定的 String 中提取的值。最后返回一个 Integer 对象( Integer 是Java中 int 基本数据类型的封装类)
方法差异
1、十六进制转八进制中进制转换函数只可以返回其包装类
2、十六进制转十进制中进制转换函数返回的是其基本数据类
参考代码
package com.company;
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
String a = scanner.nextLine();
System.out.println(Long.parseLong(a,16));
}
}
3、十进制转十六进制
问题描述
十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有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。
给出一个非负整数,将它表示成十六进制的形式。
输入格式
输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647==(用int类型)==
输出格式
输出这个整数的16进制表示
样例输入
30
样例输出
1E
题目分析
1、接收所输入的正整数n
2、使用Java提供的进制转换函数,将十进制转换成十六进制
注:用Integer.toHexString(a) 返回的英文字母是小写的,虽然已经完成了十进制转十六进制这个过程,但是由于输出与样例不同,蓝桥杯的练习系统照样会报错
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
System.out.println(Integer.toHexString(a));
正如上面的代码一样,其输出内容为;
30//我们所输入的非负整数 a
1e//可看出,其输出的英文字母为小写
3、如想将英文字母变为大写,需要在后面加上 . toUpperCase()
因为toUpperCase()方法用于返回给定 char 值的大写字符!
参考代码
package com.company;
import java.util.Scanner;
import java.lang.String;
public class Main
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
System.out.println(Integer.toHexString(a).toUpperCase());
}
}
其输出内容为:
30//我们所输入的非负整数 a
1E//可看出,在我们加上 toUpperCase() 其输出的英文字母为大写