一个有意思的问题--如何实现36进制运算?

ttyy 2004-03-24 08:21:33
请问如何实现36进制运算。

所谓的36进制为0~9及"A"~"Z",共36个字符。

例如:有一个字符串: 100000000
将此字符串加10的值为:10000000A
将此字符串加20的值为:10000000K
将此字符串加40的值为:10000001D
……

请问如何实现。

...全文
121 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
WestGateBlowSnow 2004-03-24
  • 打赏
  • 举报
回复
做两个换算的function,一个从36进制到10进制,一个相反,每次要加减什么的,换成10进制,算完,换回去
ghostvalley 2004-03-24
  • 打赏
  • 举报
回复
//如果你的数值还没有超过一个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();
}
}
jimjxr 2004-03-24
  • 打赏
  • 举报
回复
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)");
}

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧