编程实现36进制和10进制之间的相互转换

36进制转换成10进制的方法,以R910Y为例

R9就是  27 * 36^1 + 9*36^0 =  981

10Y 就是 1* 36^2 + 0 * 36^1 + 34*36^0 =1330


10进制转换成36进制的方法,以107952360为例

(1079/36^0) % 36 = 35

(1079/36^1) % 36 = 29

(1079/36^2) < 0

所以1079转换为36进制就是(29,35)即(T,Z)

(52360/36^0) % 36 = 16

(52360/36^1) % 36 = 14

(52360/36^2) % 36 = 4

(52360/36^3) % 36 = 1

(52360/36^4) < 0

所以52360转换为36进制就是(1,4,14,16

转换过程就是对36的方幂进行求余,然后将余数按照方幂从大到小排列即可。


C++编程实现:

private const string X36 ="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

//10进制转换成36进制
public string ConvertTo36(int val)
{
 string result ="";
 while (val >= 36)
{
 result = X36[val % 36] + result;
 val /= 36;
}
 if (val >= 0) result = X36[val] + result;
 return result;
}

//36进制转换成10进制 

//math.pow()math.h中定义的数学函数,意为求幂次。Convert.ToInt32()函数意为将字符串转换成数字。

//indexOf函数是将从头到尾地检索字符串

public int ConvertTo10(string str) { int result = 0; int len = str.Length; for (int i = len; i > 0; i--) { result += X36.IndexOf(str[i - 1]) * Convert.ToInt32(Math.Pow(36, len - i)); } return result; }



  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值