面试题:10进制转二十五进制

Posted sbjba

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题:10进制转二十五进制相关的知识,希望对你有一定的参考价值。

import re


class DecimalToTwentyFiveHex:
    """
    面试题:十进制转换成25进制
    """
    def __init__(self, int_ten):

        self.stack = []  # 存储正整数部分转换值
        self.flag = None
        self.num_integer = None  # 存贮整数部分
        self.num_fractional = None  # 存贮小数部分

        if isinstance(int_ten, int):
            self.flag = 1
            self.num_integer = int_ten
        elif isinstance(int_ten, float):
            self.flag = 2
            self.num_integer = int(str(int_ten).split(.)[0])
            self.num_fractional = int(str(int_ten).split(.)[1])
        else:
            self.flag = 3
            print("请输入正确的数字!")
            return

    def conversion(self):
        if self.flag == 1:
            self.main_conversion(self.num_integer)
            self.stack.reverse()
        elif self.flag == 2:
            self.main_conversion(self.num_integer)
            self.stack.reverse()
            self.small_conversion(self.num_fractional)
        elif self.flag == 3:
            pass
        return self.stack

    def __call__(self, *args, **kwargs):
        return self.conversion()

    def main_conversion(self, num):
        """
        除25取余
        反转列表
        :param num:
        :return:
        """
        main_int = num // 25
        yu_int = num % 25
        self.stack.append(yu_int)
        if main_int >= 25:
            self.main_conversion(main_int)
        else:
            self.stack.append(main_int)

    def small_conversion(self, num):
        """
        乘25取整
        :param num:
        :return:
        """
        self.stack.append(.)

        main_int = str(num * 25).split(.)
        self.stack.append(main_int[0])
        if not isinstance(num*25, int):
            self.small_conversion(int(main_int[1]))



if __name__ == "__main__":
    # instantiate = DecimalToTwentyFiveHex(665.358)  # 11f.8niiiiiiie
    num_instantiate = DecimalToTwentyFiveHex(665358.22)  # 1hee8.5ccccc
    # num_instantiate = DecimalToTwentyFiveHex(665358)  # 1hee8.5cccccc
    # num_instantiate = DecimalToTwentyFiveHex(‘665358‘)  # 1hee8.5cccccc
    result = num_instantiate()
    print(result)
    pass

 

以上是关于面试题:10进制转二十五进制的主要内容,如果未能解决你的问题,请参考以下文章

机器学习面试题

[剑指offer]面试题10:二进制中1的个数

《剑指offer》第十五题:二进制中1的个数

JAVA基础再回首(二十五)——Lock锁的使用死锁问题多线程生产者和消费者线程池匿名内部类使用多线程定时器面试题

前端面试题(二十五)之http的几种请求方法用途?

Java面试题:给定一个整数,按10进制来看,计算里面包含多少个0