##  进制转换

ASCII码转换为int：ord('A')    65

int转为ASCII码：chr(65)   'A'

在日常生活中我们频繁使用到数学的进制，如季度逢三进一，星期逢七进一；×××、小时使用12进制，每天使用24进制，每月使用30进制，分秒使用60进制，一年使用360进制等等；在编程过程中我们经常需要转换进制，虽然Python已经内置了常用进制转换函数，如int，bin，hex，oct；但是如果我们需要转换成其他进制怎么办呢？

    我们知道，十进制转换成二进制时，使用“除2取余，逆序排列”即可。二进制转换成十进制时按权展开，即可得到十进制。类似地可以实现十进制转换成任意进制，任意进制也可以转换成十进制；通过十进制进行中转，即可实现任意进制数之间的转换了。



```
#将十进制数转换成任意进制20进制以内，任意进制只需添加不同的符号即可
def decimalToAny(num,n):
    if num==0:
        return 0
    baseStr={}
    for i in range(10,n):
        baseStr[i]=chr(i-10+97)
    print(baseStr)
    new_num_str = ""
    while num != 0:
        remainder = num % n
        if  remainder > 9:
            remainder_string = baseStr[remainder]
        else:
            remainder_string = str(remainder)
        new_num_str = remainder_string+new_num_str
        num = num // n
    return new_num_str
decimalToAny(58,30)
```

    {10: 'a', 11: 'b', 12: 'c', 13: 'd', 14: 'e', 15: 'f', 16: 'g', 17: 'h', 18: 'i', 19: 'j', 20: 'k', 21: 'l', 22: 'm', 23: 'n', 24: 'o', 25: 'p', 26: 'q', 27: 'r', 28: 's', 29: 't'}





    '1s'




```
#将任意进制数转换成十进制
def anyToDecimal(num,n):
    baseStr={}
    for i in range(10):
        baseStr[str(i)]=i
    for i in range(10,n):
        baseStr[chr(i-10+97)]=i
    print(baseStr)
    new_num = 0
    for i in range(len(num)):
        new_num+=baseStr[num[len(num)-1-i]]*(n**i)
    return new_num
anyToDecimal('1s',30)
```

    {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, 'a': 10, 'b': 11, 'c': 12, 'd': 13, 'e': 14, 'f': 15, 'g': 16, 'h': 17, 'i': 18, 'j': 19, 'k': 20, 'l': 21, 'm': 22, 'n': 23, 'o': 24, 'p': 25, 'q': 26, 'r': 27, 's': 28, 't': 29}





    58




```
print('{0}xxxxxxxx{1}'.format('这是0要传入的东西','这是1要传入的东西'))
```
test={'nan':'werty'}
print("ghjk{nan}gbhnjmk".format(**test))
test
进制转化，b o d x 分别表示二、八、十、十六进制


```
print('{:b}'.format(250))
print('{:o}'.format(250))
print('{:d}'.format(250))
print('{:x}'.format(250))
#千分位分隔符，这种情况只针对与数字
print('{:,}'.format(100000000))
print('{:,}'.format(235445.234235))
```

    11111010
    372
    250
    fa
    100,000,000
    235,445.234235


精度和类型f精度常和f一起使用


```
print('{:.1f}'.format(4.234324525254))
print('{:.4f}'.format(4.1))
```

    4.2
    4.1000