您的位置:首页 > 编程语言 > Java开发

java 使用查表法将十进制转换成十六进制其他进制

2015-08-03 19:14 621 查看
/*  
 *Copyright (c) 2014, 烟台大学计算机学院  
 *All rights reserved.  
 *文件名称:main.cpp  
 *作者:张旺华  
 *完成日期: 2015 年 8 月 3 日  
 *版本号:v1.0  
 *  
 *问题描述:对给定整数60,获取其16进制表现形式
 *什么是16进制:数据的一种表象形式,
 *原理:将二进制只的4位为一个16进制单位。
 *咋获取每四位呢? 其实就是获取四位中的1 可以通过&运算的方式完成
 *如何获取下次啊四位呢? 可以通过无符号右移4位
 */  
//代码:
package zhuan;

public class chuan_16 {
	public static void main(String[] args){ 
	int hum=364;
	String str_hex=toHex(hum);
	System.out.println(str_hex);
	}
public static String toHex(int num){
	//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;
	while(num!=0){
		//对num进行&运算
		int temp=num&15;
		arr[--index]=chs[temp];
		num=num>>>4;
	}
	/*
	for(int i=0;i<8;i++)
	{
		//对变量值得4位进行提取获得16进制位值,并且赋值给变量temp
		int temp=num&15;
		if(temp>9)
			//对提取的值进行存储,如大于9,转换为字母
			chs[7-i]=(char)(temp-10+'A');
		else
			//对提取的值进行存储,如不小于9,为数字字符;
			chs[7-i]=(char)(temp+'0');
		num=num>>>4;//变量值进行右移4位;
	}
	int i=0;
	for(;i<chs.length;i++){
		if(chs[i]==0)
			continue;
		else
			break;
	}
	System.out.print("0x");
	for(;i<chs.length;i++){
		System.out.print(chs[i]);
	}
	//以上太过于复杂
	  */
	return "0x"+toString(arr,index);
	
}
//定义一个功能,将字符数组转成字符串
public static String toString(char []arr,int index){
	String temp="";
	for(int i=index;i<arr.length;i++){
		temp=temp+arr[i];
	}
	return temp;
}
}

运行结果:



十进制转二进制

package zhuan;

public class chuan_16 {
	public static void main(String[] args){ 
	int hum=364;
	String str_hex=toHex(hum);
	System.out.println(str_hex);
	}
public static String toHex(int num){
	//1、建立表
	char []chs={'0','1'};
	//2、创建临时容器
	char []arr=new char[32];
	//3、创建操作临时容器的脚标
	int index=arr.length;

	while(num!=0){
		//对num进行&运算
		int temp=num&1;
		arr[--index]=chs[temp];
		num=num>>>1;
	}
	/*
	for(int i=0;i<8;i++)
	{
		//对变量值得4位进行提取获得16进制位值,并且赋值给变量temp
		int temp=num&15;
		if(temp>9)
			//对提取的值进行存储,如大于9,转换为字母
			chs[7-i]=(char)(temp-10+'A');
		else
			//对提取的值进行存储,如不小于9,为数字字符;
			chs[7-i]=(char)(temp+'0');
		num=num>>>4;//变量值进行右移4位;
	}
	int i=0;
	for(;i<chs.length;i++){
		if(chs[i]==0)
			continue;
		else
			break;
	}
	System.out.print("0x");
	for(;i<chs.length;i++){
		System.out.print(chs[i]);
	}
	//以上太过于复杂
	  */
	return toString(arr,index);
	
}
//定义一个功能,将字符数组转成字符串
public static String toString(char []arr,int index){
	String temp="";
	for(int i=index;i<arr.length;i++){
		temp=temp+arr[i];
	}
	return temp;
}
}

运行结果:



知识点运用及学习心得:

使用查表法使得程序更加简单。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: