任何进制之间相互转换

任何进制之间相互转换
package  atm;

import  java.math.BigInteger;

/** */ /**
 * <ul>
 * <li>Title:[ScaleUtil]</li>
 * <li>Description: [任何进制之间相互转换]</li>
 * <li>Copyright 2009 Upengs Co., Ltd.</li>
 * <li>All right reserved.</li>
 * <li>Created by [Huyvanpull] [2011-12-8]</li>
 * <li>Midified by [modifier] [modified time]</li>
 * </ul>
 * 
 * 
@version 1.0
 
*/

public   class  ScaleUtil
{
    
/** *//**
     * <ul>
     * <li>Description:[任何进制转10进制]</li>
     * <li>Created by [Huyvanpull] [2011-12-8]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
     * 
@param anyScaleStr
     * 
@param oScale
     * 
@return
     
*/

    
public String anyScale2tenScale(String anyScaleStr, long oScale)
    
{
        BigInteger tenScaleResult 
= new BigInteger("0");
        String[] numStrs 
= anyScaleStr.split("[,]");
        
for (int i = 0; i < numStrs.length; i++)
        
{
            tenScaleResult 
= tenScaleResult.add(BigInteger.valueOf(oScale).pow(
                    numStrs.length 
- 1 - i).multiply(
                    BigInteger.valueOf(Long.parseLong(numStrs[i]))));
        }

        
return tenScaleResult.toString();
    }

    
    
/** *//**
     * <ul>
     * <li>Description:[10进制转任何进制]</li>
     * <li>Created by [Huyvanpull] [2011-12-8]</li>
     * <li>Midified by [modifier] [modified time]</li>
     * </ul>
     * 
     * 
@param tenScaleStr
     * 
@param tScale
     * 
@return
     
*/

    
public String tenScale2anyScale(String tenScaleStr, long tScale)
    
{
        StringBuffer result 
= new StringBuffer();
        BigInteger c62Source 
= new BigInteger(tenScaleStr);
        
while (true)
        
{
            result.insert(
0, c62Source.mod(BigInteger.valueOf(tScale)) + ",");
            c62Source 
= c62Source.divide(BigInteger.valueOf(tScale));
            
if (BigInteger.valueOf(tScale).compareTo(c62Source) == 1)
            
{
                
if (c62Source.longValue() != 0)
                    result.insert(
0, c62Source.longValue() + ",");
                
break;
            }

        }

        
return result.toString();
    }

    
    
public static void main(String[] args)
    
{
        ScaleUtil su 
= new ScaleUtil();
        String anyScaleStr 
= su.tenScale2anyScale("63"16);
        System.out.println(anyScaleStr);
        String tenScaleStr 
= su.anyScale2tenScale(anyScaleStr, 16);
        System.out.println(tenScaleStr);
    }

}

你可能感兴趣的:(任何进制之间相互转换)