`

java十进制与任意进制之间转换

    博客分类:
  • java
阅读更多

java十进制与任意进制之间转换

 

import java.util.HashMap;
import java.util.Map;
import java.util.Stack;
public class HexTransformatUtil {  
	/**
	 * 将十进制转换为任意进制值
	 * @param digths 转换后的进制最小位上,依次出现的字符值,比如26进制"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
	 * @param num 将被转换的十进制值
	 * @param length 转换到指定字符串后,如果不足length长度位,自动补足最小值,比如26进制"ABCDEFGHIJKLMNOPQRSTUVWXYZ"将在最前补"a"
	 * @return
	 */
    public static String hex10ToAnly(String digths, int num,int length){  
        StringBuffer str = new StringBuffer("");  
        int base = digths.trim().length();
        if(0==num){
        	str.append(digths.charAt(0));
        }else{
        	Stack<Character> s = new Stack<Character>();  
            while(num != 0){  
                s.push(digths.charAt(num%base));  
                num/=base;  
            }  
            while(!s.isEmpty()){  
                str.append(s.pop());  
            }
        }
        String prefix = "";
        String suffix = str.toString();
        if(length>suffix.length()){
        	for(int count = 0;count<length-suffix.length();count++){
        		prefix = prefix + digths.charAt(0);
        	}
        }
        return prefix + suffix;  
    }  
    
    /**
	 * 将任意进制转换为十进制值
     * @param digths 转换前的进制最小位上,依次出现的字符值,比如26进制"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
     * @param hexValue 转换前的进制字符串值
     * @return
     */
    public static int hexAnlyTo10(String digths, String hexValue){  
    	if(null==hexValue||"".equals(hexValue.trim()))  return 0;
    	int base = digths.trim().length();
    	
    	Map<String,Integer> digthMap = new HashMap<String,Integer>();
    	int count=0;
    	for(char item : digths.trim().toCharArray()){
    		digthMap.put(""+item, count);
    		count++;
    	}
    	String str = new StringBuffer(hexValue.trim()).reverse().toString();
    	int sum = 0;
    	for(int index = 0;index<str.length();index++){
    		sum = new Double(Math.pow(base, index)).intValue() * digthMap.get(""+str.charAt(index)) +sum;
    	}
    	return sum;
    }  
    
    public static void main(String[] args) {
    	//将十进制"0123456789"值55转换为26进制“ABCDEFGHIJKLMNOPQRSTUVWXYZ”对应的值,不需要格式化最后输出字符串
		System.out.println(hex10ToAnly("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 55, 0));
		
		//将26进制“ABCDEFGHIJKLMNOPQRSTUVWXYZ”字符串值“CD”转换为十进制"0123456789"值55对应的值,不需要格式化最后输出字符串
		System.out.println(hexAnlyTo10("ABCDEFGHIJKLMNOPQRSTUVWXYZ", "CD" ));
	}
}  

 

分享到:
评论

相关推荐

    Java把十进制转成二进制(任意进制)的程序

    在Java编程语言中,将十进制数转换为二进制或其他任意进制是一项常见的任务。这主要涉及到数字系统的基础理论以及Java中的字符串处理和数学运算。以下将详细讲解如何实现这一功能。 首先,让我们从最基础的二进制...

    java 任意进制转换(源码)

    在Java编程语言中,进制转换是一项基础但...以上就是这个"java 任意进制转换(源码)"程序可能涉及的关键知识点。通过学习和理解这些内容,开发者不仅可以掌握Java的进制转换,还能提升在GUI编程和异常处理方面的技能。

    进制转换器,2进制十进制八进制十六进制之间任意转换

    八进制到二进制的转换与十进制到二进制类似,只是除数变为8。 十六进制(Base-16)使用16个符号0-9和A-F(分别代表10到15)来表示。十六进制常用于编程,因为它可以简洁地表示二进制数,尤其是长串的二进制位。例如...

    Java实现任意进制的转换

    在编程领域,进制转换是一项基础且重要的...以上就是Java实现任意进制转换的方法,包括二进制转十六进制、十进制转任意进制以及36进制加法。理解这些概念和方法,对于理解和编写处理数字系统转换的Java代码至关重要。

    将十进制数N转换为r进制的数(Java)代码

    本篇将详细讲解如何用Java编程语言实现将十进制数N转换为任意进制r的数,并以N=3456,r=8为例进行具体阐述。 首先,让我们理解辗转相除法(也称除法法或欧几里得算法),它是转换进制的基本算法之一。对于给定的十...

    java 26进制转换

    通常,我们谈论的进制转换包括二进制、八进制、十进制和十六进制之间的转换。然而,"26进制"通常指的是使用26个字母(A-Z)来表示数值,类似于在十六进制中使用A-F来代表10-15。这种转换方法在处理基于字母的编码...

    java String 与各种进制字符之间的转换

    本文将详细探讨Java中如何进行String与二进制、八进制、十进制以及十六进制之间的转换。 首先,我们要了解进制的概念。进制是一种数字系统,它使用一组符号来表示数值。最常见的有二进制(base-2)、八进制(base-8...

    JAVA实现十进制整数(正负)转换为二进制输出

    任意输入一个十进制整数,包括正数负数,通过程序实现可以输出相应的二进制编码

    Java 任意进制整数转换

    任意进制整数的转换,用十进制数作为中转,原则上不能超过10进制数能表示的最大整数。

    Java 实现控制台输入任意字符,转换成十六进制、二进制和十进制

    在Java编程语言中,将控制台输入的任意字符转换为十六进制、二进制和十进制是一项常见的任务,特别是在处理数据表示和计算时。本文将深入探讨如何实现这一功能,同时也会提及一些相关的基本概念。 首先,我们需要...

    JAVA二进制字节数组字符十六进制BCD编码转换.doc

    1. **二进制与十六进制转换** - 二进制是一种基于2的计数系统,只包含两个数字:0和1。 - 十六进制是一种基于16的计数系统,由0-9的阿拉伯数字和A-F的字母(代表10-15)组成。 - 在Java中,可以使用`Integer....

    任意进制数之间的转换

    任意进制数之间的转化,使用栈的来实现,先转化为十进制数,然后目标进制数。

    进制转换C源码

    本文将基于标题“进制转换C源码”和描述,深入探讨C语言实现不同进制转换的原理及代码实现,同时会涉及与Java语言进制转换差异的讨论。 首先,进制转换是计算机科学中的基本概念,主要包括二进制、八进制、十进制和...

    用栈完成十进制转换成R进制

    此程序是用栈来完成进制的转换,有栈的结构体的构造,该程序是用将十进制任意转换成其他进制,但只限于整数

    二 八 十 十六进制间的任意转换

    要将八进制或二进制转换为十进制,可以分别对每个位置的数字乘以基数的相应幂次然后求和。例如,将八进制数53转换为十进制: 5 × 8^1 + 3 × 8^0 = 40 + 3 = 43 十六进制,又称十六位制,使用0到9以及A到F这十六...

    二进制,十进制,十六进制,bit转换工具 v1.5.1【最终版】

    原创软件,MFC界面,可以任意转换64bit数据到2进制、10进制、16进制,2进制可以直接查看任意bit,取0~63之间的任意区间值,并且支持取位、移位大小端转换等等,尤其适合做嵌入式开发的相关人员使用。真正做到了简单...

    输入一个十进制数 转换成 八进制数输出(java源码)

    对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数。java代码实现源码。

    数字各种进制的转换

    本文详细介绍了数字进制转换的基本原理,并通过具体的Java代码示例实现了任意进制之间的转换。通过对非十进制到十进制以及十进制到非十进制的转换过程进行分析,可以帮助读者更好地理解和掌握进制转换的核心算法。在...

    把十进制整数变成十六进制数

    我们可以先将十进制数转换为二进制,然后每四位(因为16=2^4)为一组,从低位到高位,将二进制转换为对应的十六进制数。如果二进制位不足四位,前面可以补零。 例如,我们有一个十进制数345,转换过程如下: - 345...

Global site tag (gtag.js) - Google Analytics