python十进制转三进制_把10进制数转成36进制数

本文介绍了10进制与36进制的概念,并通过一个例子详细解释了10进制如何转换为36进制。在编程中,进制转换是常见操作,文章以Python代码展示了实现10进制到36进制转换的具体步骤,包括除法和取余的过程,最后提供了一个示例函数`base36_encode`用于完成该转换。
摘要由CSDN通过智能技术生成

1. 10进制与36进制

我们从小学习的数字都是10进制的,自然而然的以为这就是计数的唯一方法,直到接触2进制,才惊奇的发现原来还可以逢2进1。后来又接触了8进制,16进制,慢慢明白,这些都只是数值的一种表达形式,10进制更容易理解和使用,所以我们平时使用10进制。在编程中,进制转换是很常见的操作,那么今天,就和大家一起来实现10进制到36进制的转换。

在理解36进制之前,先回忆一下10进制,以321为例,小时候,老师是这样叫我们的

百位 十位 个位

3 2 1

3*10*10 2*10 1*1

300 + 20 + 1 = 321

数字在不同的位上,所代表的数值是不一样的,上面是10进制的321,如果321 是 36进制的,那么这个36进制的321对应的10进制数值是多少呢?

3 2 1

3*36*36 2*36 1*1

3888 + 72 + 1 = 3961

10进制是逢10进1,36进制是逢36进1, 于是我们可以总结出一个公式,假设一个数值是AnAn-1... A2A1A0它是m进制的,那么换算成10进制的方法如下

An*mn+ An-1*mn-1... + A2*m2+ A1*m1+ A0*m0

m的0次方是1, 如果m是10,不正是我们所熟悉的百位,十位,个位么!

python 10进制转为36进制

前面说到,36进制是逢36进1,可是一个位上,最大也就是9啊,怎么用一个位来表示比9大的数值呢,这个可以借鉴16进制的方法,用a来表示10, b来表示11, 那么在36进制中,z就表示35, z + 1 = 36, 逢36进1, 那么10进制的36用36进制表示的话就是10= 1*361+ 0*360= 36 , 36进制的10 等于10进制的36。

36进制的10 转成 10进制的过程,就是一个逐位计算的过程,每一位的数值乘以这一位的1所对应的10进制数值,然后所有位对应的10进制相加。将10进制转成36进制的过程,就是上面这个过程的反向过程,36转10进制用乘法,10进制转36进制就用除法,下面以10进制数值3961 为例,向你演示转换为36进制的过程

第一步, 3961 除以 36 , 等于110 ,余 1,一定要把这个余数记住

第二步, 110 除以 36 , 等于3 ,余 2

第三步, 3 除以 36 , 等于0,余 3

第三步,3除以36 ,结果是0, 当除法的结果是0时,就不再进行转换了,接下来,把这3次除法所得到的余数倒序组合在一起正好是321, 这就是10进制数值 3961 转换成36进制的结果,用python代码处理方法如下

def base36_encode(number):

num_str = '0123456789abcdefghijklmnopqrstuvwxyz'

if number == 0:

return '0'

base36 = []

while number != 0:

number, i = divmod(number, 36) # 返回 number// 36 , number%36

base36.append(num_str[i])

return ''.join(reversed(base36))

print(base36_encode(3961))

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值