Python使用栈十进制转二进制、十进制转任意进制(代码)

# 10转2
from pythonds.basic import Stack  # 引入栈


def divide_by2(dec_number):
    rem_stack = Stack()
    while dec_number > 0:
        rem = dec_number % 2  # 取余
        rem_stack.push(rem)  # 入栈
        dec_number = dec_number // 2  # 取整

    bin_string = ""
    while not rem_stack.isEmpty():  # 如果栈内有东西
        bin_string += str(rem_stack.pop())
        # 用字符串的方式每次取一个连接上去

    return bin_string


print(divide_by2(123))
print(divide_by2(233))

# 十进制转化成任意进制
from pythonds.basic import Stack  # 引入栈


def base_converter(dec_number, base):  # 传入十进制数,和要转换成的进制
    digits = "0123456789ABCDEF"
    rem_stack = Stack()
    while dec_number > 0:
        rem = dec_number % base  # 取余
        rem_stack.push(rem)  # 入栈
        dec_number = dec_number // base  # 取整

    new_string = ""
    while not rem_stack.isEmpty():  # 如果栈内有东西
        new_string += digits[rem_stack.pop()]
        # 用字符串的方式每次取一个连接上去

    return new_string


print(base_converter(123, 8))
print(base_converter(233, 16))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值