public void test(String[] args)
throws Exception
{
BigInteger num = new BigInteger(args[0],36);
BigInteger sum = num.add(new BigInteger(args[1], 10));
System.out.println(args[0] + "(36) + " + args[1] + "(10) = " + sum.toString(36) + "(36)");
}

解决方案 »

  1.   

    //如果你的数值还没有超过一个long型长度的话
    class IntegerBase36
    {
      private long val;
      public IntegerBase36(long v)
      {
        val = v;
      }
      public IntegerBase36(String vstr) //e.g. vstr="10000000A"
      {
        val = 0;
        for(int i=0; i<vstr.length(); i++)
        {
          char c = vstr.charAt(i);
          if(c>='0' && c<='9')
            val += c-'0';
          else
            val += c-'A';
        }     
      }
      public void add(long v1) 
      {
        val += v;
      }
      public void add(IntegerBase36 ib36)
      {
        val += ib36.longValue();
      }
      public long longValue()
      {
         return val;
      }
      public String toString()
      {
        long v = val;
        StringBuffer s = new StringBuffer();
        do{
          if((v % 36) <= 9)
            s.append((char)('0'+(v%36)));
          else
            s.append((char)('A'+(v%36)));
          v /= 36; 
        }while(v != 0);    return s.toString();
      }
    }
      

  2.   

    做两个换算的function,一个从36进制到10进制,一个相反,每次要加减什么的,换成10进制,算完,换回去