Python实现十进制转换的多种方法

Python 实现十进制转换有多种方法,一般情况下用得最多的还是使用自带的方法来进行转换。那么如何让数字从十进制转为二进制呢?

 

# 假设我们十进制数字是 10
dec = 10


#使用 bin() 从十进制转为二进制
print(bin(10))     # 输出结果是 0b1010


# 使用 oct() 从十进制转为八进制
print(oct(dec))    # 输出结果是 0o12


# 使用 hex() 从十进制转为十六进制
print(hex(dec))    # 输出结果是 0xa

以上是直接使用python自带的方法,当然我们可以从数学的角度来实现进制转换。

这里我们使用栈这种数据结构来实现进制转换。

名为 stackExample.py 的文件

# 栈数据结构
class Stack():

    def __init__(self):
        self.items = []

    def push(self, item):
        self.items.append(item)

    def pop(self):
        return self.items.pop()
    
    def peek(self):
        return self.items[len(self.items)-1]

    def isEmpty(self):
        return True if self.items == [] else False

    def size(self):
        return len(self.items)

    def __str__(self):
        return str(self.items)

名为 decNumberConverter.py 的文件

from stackExample import *

def decNumberConverter(decNum, base):
    """ 十进制转任意进制 """
    digits = "0123456789ABCDEF"

    s = Stack()
    n = decNum

    # 入栈
    while n != 0:
        s.push(n%base)
        n = n // base
    
    res = ""
    
    # 出栈
    while s.isEmpty() == False:
        res += digits[s.pop()]
    
    return res

print(decNumberConverter(255, 16))

 

还有一种方法是使用递归来实现。

# 用递归实现十进制转任意进制算法

def decNumConverter(decNum, base):

    convertString = "0123456789ABCDEF"

    if decNum < base:
        return convertString[decNum]
    else:
        return decNumConverter(decNum // base, base) + convertString[decNum % base]

 

 

 

 

 

 

 

 

你可能感兴趣的:(Python技巧,python,算法,栈)