import java.util.Arrays;
class ArrayTest7{
public static void main(String[] args){
int num = 60;
String str_bin = toBinary(num);
String str_oct = toOctall(num);
String str_hex = toHex(num);
System.out.println("bin:"+str_bin);
System.out.println("oct:"+str_oct);
System.out.println("hex:"+str_hex);
//Java已经提供的功能。
System.out.println(Integer.toBinaryString(60));
System.out.println(Integer.toOctalString(60));
System.out.println(Integer.toHexString(60));
}
//十进制 二进制
public static String toBinary(int num){
return trans(num, 1, 1);
}
//十进制 八进制
public static String toOctall(int num){
return "0"+trans(num, 7, 3);
}
//十进制 十六进制
public static String toHex(int num){
return "0x"+trans(num, 15, 4);
}
/*
进制转换 终结版
需求;十进制》》》十六进制 输出一个字符串
那我们 十进制 二进制
num & 1
num >>> 1
十进制 八进制
num & 7
num >>> 3
那我们是不是 可以再传2个数据过去呢,直接实现所有的进制转换呢?
int num int base基数 int offset偏移量
*/
//定义一个功能进行字符转换
public static String trans(int num, int base, int offset){
//1.建立表 也就是对应关系
char[] chs = {'0','1','2','3',
'4','5','6','7',
'8','9','A','B',
'C','D','E','F',};
//2.建立一个临时容器
char[] arr = new char[8];
//3.定义一个角标
int index = arr.length;
//4.通过循环 对num进行& >>>运算
while (num != 0){
//5.进行&运算
int temp = num & base;
//通过角标 进行索引 查出表中对应的字符 存到临时容器中
arr[--index] = chs[temp];
//7. 进行>>>运算
num = num >>> offset;
}
return toString(arr, index);//把数组和 数组开始存储的有效位置发过去
}
//定义一个功能实现数组转字符串的功能
public static String toString(char[] arr, int index){
String temp = "";
for (int x=index; x<arr.length; ++x){
temp = temp + arr[x];
}
return temp;
}
}
进制转换
最新推荐文章于 2025-06-14 13:56:38 发布