python 自己写的十进制转所有进制

本文提供了一种通用的二进制到多种进制转换算法,并通过测试验证了其正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#-*- coding:utf-8 -*-
#-------------------------------------------------------------------------------
# Name: ??1
# Purpose:
#
# Author: qyl
#
# Created: 23-11-2011
# Copyright: (c) Administrator 2011
# Licence: <your licence>
#-------------------------------------------------------------------------------
#!/usr/bin/env python


def bin2(num,jz):
if type(num) != type(1) or type(jz) != type(1):
return "para error!"
if jz > 20:
return "para jz should little than 20"
t = num
r = ''
#如果小于进制数,直接转换
if t < jz:
stmp = `t`
if t > 9:
stmp = chr(55 + t)
return stmp
#如果不小于2倍的进制数
while t >= jz*2:
tmp = t%jz
stmp = str(tmp)
if tmp > 9:
stmp = chr(55 + tmp)
r = stmp + r
t = t/jz
#如果除完结果小于进制数,进行如下转换
if t < jz:
stmp = `t`
if t > 9:
stmp = chr(55 + t)
r = stmp + r
return r
#如果除完结果大于进制数,进行如下转换
for i in range(jz,jz*2):
if t == i:
temp = `i - jz`
if i - jz > 9:
temp = chr(55 + i - jz)
r = "1" + temp + r
break
return r

def test():
for i in range(100000):
for j in range(2,17):
c = bin2(i,j)
t = int(c,j)
if t != i:
print c,
print i,
print 'no'
break
print "no error"

def main():
test()


if __name__ == '__main__':
main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值