精华内容
下载资源
问答
  • Python 十进制任意进制转换

    千次阅读 2014-09-20 14:45:05
    def base10toN(num,n):  """Change a to a base-n number.  Up to base-36 is supported without special notation."""  num_rep={10:'a',  11:'b',  12:'c',  13:'d
    def base10toN(num,n):
         """Change a  to a base-n number.
         Up to base-36 is supported without special notation."""
         num_rep={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',
              30:'u',
              31:'v',
              32:'w',
              33:'x',
              34:'y',
              35:'z'}
         new_num_string=''
         current=num
         while current!=0:
             remainder=current%n
             if 36>remainder>9:
                 remainder_string=num_rep[remainder]
             elif remainder>=36:
                 remainder_string='('+str(remainder)+')'
             else:
                 remainder_string=str(remainder)
             new_num_string=remainder_string+new_num_string
             current=current/n
         return new_num_string
    展开全文
  • part: 要转换的数字 :return: 转换结果 """ number = self.__any_sys_to_int(int_part) return self.__int_to_any_sys(number) def __any_sys_to_int(self, number): """ 将任何进制的整数部分转换为计算机可运算的...

    代码如下:

    # -*- coding = utf-8 -*-
    # @Time : 2021/1/23 16:10
    # @Author : Suage
    # @File : SysConvert.py
    
    from threading import Lock
    
    
    class StringBuilder:
        def __init__(self, content=None, convert_way='STR', convert_function=None):
            if content is None:
                self.content = list()
            elif isinstance(content, str):
                self.content = list(content)
            else:
                if convert_way.lower() == 'str':
                    self.content = list(str(content))
                elif convert_way.lower() == 'repr':
                    self.content = list(repr(content))
                else:
                    self.content = list(convert_function(content))
    
        def get_str(self):
            """
            以字符串形式输出内容
    
            :return: 内容
            """
            return ''.join(self.content)
    
        def append(self, text, location=-1):
            if location == -1:
                self.content.extend(text)
            else:
                for c in text: self.content.insert(location, c)
    
        def reverse(self):
            self.content.reverse()
    
    
    class SysConvert:
        __unit: str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_'
    
        def __init__(self):
            self.__lock = Lock()
            self.__input_number: str
            self.__sys_in: int
            self.__sys_out: int
    
        def set_unit(self, unit):
            """
            设置计数用字符
    
            :param unit: 计数用字符序列
            """
            self.__unit = unit
    
        def num_split(self):
            """
            拆解数字的整数部分和小数部分
            :return: 整数部分, 小数部分
            """
            return self.__input_number.split('.')
    
        def __is_int(self):
            """
            判断输入数字是否为整数
            :return: 整数返回True, 小时返回False
            """
            if '.' in self.__input_number: return False
            return True
    
        def __concert(self, input_num, input_sys, output_sys):
            """
            执行转换
            :return:转换结果
            """
            self.__input_number: str = input_num.upper().replace(' ', '')
            if self.__input_number[0] == '-':
                self.sign = False
                self.__input_number = self.__input_number[1:]
            else:
                self.sign = True
            self.__sys_in: int = input_sys
            self.__sys_out: int = output_sys
            is_int = self.__is_int()
            if is_int:
                if self.input_error(self.__input_number):
                    return 'input error'
                return self.__int_concert(self.__input_number)
    
            int_part, float_part = self.num_split()
    
            if self.input_error(int_part) or self.input_error(float_part):
                return 'input error'
    
            number_part = f'{self.__int_concert(int_part)}.{self.__float_concert(float_part)}'
            if self.sign:
                return number_part
            return f'-{number_part}'
    
        def concert(self, input_num, input_sys, output_sys):
            """
            执行转换
    
            :param input_num: 输入数字
            :param input_sys: 输入数字进制
            :param output_sys: 输出数字进制
            :return: 转换结果
            """
            self.__lock.acquire()
            try:
                res = self.__concert(input_num, input_sys, output_sys)
            finally:
                self.__lock.release()
            return res
    
        def __int_concert(self, int_part):
            """
            整数部分转换为目标进制
    
            :param int_part: 要转换的数字
            :return: 转换结果
            """
            number = self.__any_sys_to_int(int_part)
            return self.__int_to_any_sys(number)
    
        def __any_sys_to_int(self, number):
            """
            将任何进制的整数部分转换为计算机可运算的整数类型
    
            :param number: 要转换的整数部分
            :return: 转换结果
            """
            res = 0
            number = number[::-1]
            for i in range(len(number)):
                res += self.__unit.index(number[i]) * pow(self.__sys_in, i)
            return res
    
        def __int_to_any_sys(self, num):
            """
            将整数类型的数字装换为目标进制的数字
            :param num: 要转换的数字
            :return: 转换结果
            """
            _sb: StringBuilder = StringBuilder()
            while True:
                num, y = divmod(num, self.__sys_out)
                _sb.append(self.__unit[y])
                if num < self.__sys_out:
                    _sb.append(self.__unit[num])
                    break
            _sb.reverse()
            return _sb.get_str().lstrip("0")
    
        def __float_concert(self, float_part):
            """
            小数部分转换为目标进制
    
            :param float_part: 要转换的小数部分(小数点后的部分)
            :return: 转换结果(小数点后面部分)
            """
            number = self.__any_sys_to_float(float_part)
            return self.__float_to_any_sys(number)
    
        def __any_sys_to_float(self, number):
            """
            将任何进制的整数部分转换为计算机可运算的整数类型
    
            :param number: 要转换的整数部分
            :return: 转换结果
            """
            res = 0
            number = number
            for i in range(len(number)):
                res += self.__unit.index(number[i]) * pow(1 / self.__sys_in, (i + 1))
            return res
    
        def __float_to_any_sys(self, num):
            """
            将整数类型的数字装换为目标进制的数字
            :param num: 要转换的数字
            :return: 转换结果
            """
            _sb: StringBuilder = StringBuilder()
            n = num
            for _ in range(15):
                n = n * self.__sys_out
                n_int = int(n)
                n = n - n_int
                _sb.append(self.__unit[n_int])
                if n == 0: break
            return _sb.get_str()
    
        def input_error(self, num):
            for c in num:
                if self.__unit.index(c) >= self.__sys_in: return True
            return False
    
    
    if __name__ == '__main__':
        c1 = SysConvert()
        res1 = c1.concert(input_num='BYSUAGE.I', input_sys=36, output_sys=6)
        res2 = c1.concert(input_num=res1, input_sys=6, output_sys=36)
        print(res1, res2, sep='\n')
    

    运行结果:
    15544450142422.3
    BYSUAGE.I

    写了将近6个小时才写完, 好累…

    展开全文
  • python十进制任意进制转换

    万次阅读 2018-08-08 22:17:00
    &#13; 将任意进制转换成十进制&#13; &#13; print(int("...将十进制转换任意进制&#13; &#13; def f(n,x):&#13; &#13; #n为待转换的十进制数,x为机制,取值为2-16..
        

    将任意进制转换成十进制

    print(int("54", 8))
    # 表示把8进制的54转换成十进制数并输出结果。
    # 8可以是2、8,10,16等进制数

    将十进制转换成任意进制

    def f(n,x):
    
        #n为待转换的十进制数,x为机制,取值为2-16
        a=[0,1,2,3,4,5,6,7,8,9,'A','b','C','D','E','F']
        b=[]
        while True:
            s=n//x  # 
            y=n%x  # 余数
            b=b+[y]
            if s==0:
                break
            n=s
        b.reverse()
        for i in b:
            print(a[i],end='')
    f(44,8)

     将十进制decimal system转换成二进制binary system

    print(bin(10))

    将十进制decimal system转换成八进制Octal

    print(oct(10))

    将十进制decimal system转换成十六进制Hexadecimal

    print(hex(10))

     

    展开全文
  • python 任意进制转换 - M进制转N进制

    千次阅读 2019-11-30 22:33:34
    在编写信息隐藏技术的时候,需要用到进制转换,用到的思想很简单 M进制数->十进制数->N进制数 在转换为N进制数时,需要考虑顺序是否反了 输入为数组的版本 # input: # bl list类型的M进制数 # M 原进制 # N ...

    在编写信息隐藏技术的时候,需要用到进制转换,用到的思想很简单

    M进制数 -> 十进制数 -> N进制数

    在转换为N进制数时,需要考虑顺序是否反了

    输入为数组的版本

    # input: 
    #    bl  list类型的M进制数
    #    M   原进制
    #    N   目标进制
    # output:
    #    res  list类型的N进制数
    def numMtoN_list(bl,m,n):
        # to dec
        dec = 0
        for i in bl[::]:
            dec *= m
            dec += i
            
        # to n-nary
        res = []
        while(dec != 0):
            res.append(dec % n)
            dec //= n
        
        # 逆序
        res = res[::-1]
        return res
    

    输入为数值的版本

    # input: 
    #    num  int类型的M进制数
    #    M    原进制
    #    N    目标进制
    # output:
    #    res  int类型的N进制数
    def numMtoN(num,m,n):
        s = list(map(int,str(num)))
        
        dec = 0
        for i in s[::]:
            dec *= m
            dec += i
        
        # dec to N
        mid = 0
        while(dec != 0):
            mid *= 10
            mid += (dec % n)
            dec //= n
        
        #逆序
        res = 0
        while(mid != 0):
            res *= 10
            res += (mid % 10)
            mid //= 10
        
        return res
    

    利用partial生成任意进制转换函数

    如果我们需要自己制定一个固定的进制转换,可以利用python自带的 partial 函数生成一个固定的进制转换函数

    利用 functools 模块的 partial 函数,可以生成任意进制转换函数

    import functools
    # 生成5进制转2进制
    num5to2_list = functools.partial(numMtoN_list,m=5,n=2)
    

    输出结果

    >>> data = [1,1,4]
    >>> res = numMtoN_list(data,5,2)
    # res = num5to2_list(data,5,2) # 效果相同
    res = [1, 0, 0, 0, 1, 0]
    
    >>> numMtoN(114,10,5)
    424
    
    展开全文
  • 十进制转换成二进制 十进制转换成二进制,采用的是“除以2求余数”的计算方法,如下所示: “除以2”的过程,得到的余数是从低到高的次序,而需要的带的输出是从高位到低位(35对应的二进制是100011),因此需要一...
  • Python实现进制转换

    千次阅读 2018-12-22 21:00:39
    程序功能:利用Python实现任意进制转换器 主要以十进制作为桥梁,利用m进制转十进制十进制转n进制实现m进制到n进制的转换。 1、m进制转十进制 从最低位(最右)算起,位上的数字乘以本位的权重,加和即得到十进制...
  • python常用进制转换の方法 (正整数)任意进制十进制 1.int()函数 ''' 描述 int() 函数用于将一个字符串或数字转换为整型。 语法 class int(x, base=10) 参数 x -- 字符串或数字。 base -- 进制数,默认十进制。 ...
  • def baseN(num, b): return ((num == 0) and "0") or (baseN(num // b, b).lstrip("0") + "0123456789abcdefghijklmnopqrstuvwxyz"[num % b])   转载于:...
  • 1.python的十进制与任意进制的转换 将任意进制转换成十进制 ...1.1 将十进制转换任意进制 def f(n,x): a=[0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F'] b=[] while True: s=n//x y=n%x b=b+[y]
  • python-十进制任意进制

    千次阅读 2019-07-17 15:58:20
    def func(num, conversion_num): ... :param num:要被转换十进制整数 :param conversion_num:要转换的进制,整数 :return: 转换后的结果 ''' a = "0123456789abcdefghijklmnopqrstuvwxyz" res = '' if num...
  • 十进制转换任意进制 代码如下: def transfer (x,n): p=1 y=0 while True: a=x%n x=int(x/n) y=y+ap p=p10 if x<n: y=y+x*p break print (y) while True: x=eval(input(“请输入你要转换的十进制数:”)) n=...
  • 输出一个十进制的数和需要转换的进制,可以实现转换进制。进制的范围是2-16 方法 方法非常简单,就是利用辗转相除发, 保存商和余数,知道商为0为止,再将余数反转。 用列表a=[0,1,2,3,4,5,6,7,8,9,’A’,’b’...
  • 引言 进制转换是计算机数据处理的基础,二进制是计算机原理中最基本的概念,十进制是人类常用的数值概念,因此,进制的转换是...十进制转换为二进制实现 1.1 定义栈的各种属性 class Stack(object): #定义栈 类 "...
  • python 进制转换

    2019-11-27 17:02:29
    python 进制转换 十进制转其他进制 #十进制数 int_str = 100 #2进制 返回值以’ob‘开头 bin_str = bin(int_str ) #8进制 数字较大时,返回值以’L‘结尾 oct_str = oct(int_str ) #16进制 数字较大时,返回值‘0x’...
  • Python实现的进制转换器#1、十六进制以内实数任意进制任意进制的转换 #2、小数位数超过位保留位小数 #3、包含负数的转换(是数值的转换而不是补码) #4、能够实现更高进制的转换:直接增加waitNumber中的字母...
  • Python实现任意进制转换

    千次阅读 2019-04-05 19:27:38
    这段代码能够实现任意进制的数据转换,并且,超过四位的数字还会适用"_"进行分割,便于多位数据的阅读。 进制格式说明 b --> 二进制 o --> 八进制 d --> 十进制 h --> 十六进制 由于format十六进制用x...
  • 加前缀0o或者0O(注意前面是阿拉伯数字0后面是字母o)十进制数: 本身默认就是十进制十六进制数:加前缀0x或者0X(注意是阿拉伯数字0)进制转换使用bin()方法把任意进制数转化为二进制数使用oct()方法把任意进制数...
  • python 任意进制十进制转换 (含小数) def changeDecToR(num, r=2): """十进制转为R进制 整数部分:“除以R取余”法 小数部分:“乘以R取整”法 :param num: 需要转换的十进制数 :param r: 目标进制 :...
  • 不算是技术工作者还是普通文员,大家都逐步开始学习python,毫无疑问,python现在已经成为热门语言了。...下面就是在实际工作中遇到的一个问题,把一个文本里面的十六进制数据转换十进制。于是写了个p...
  • 思路:先转换为十进制,再由十进制转换为目标进制。 代码: def scale_transform_decimalism(M, num): # 转换为十进制 str_dict = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' result = 0 j = 0 for i in range...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 149
精华内容 59
关键字:

python十进制转换任意进制

python 订阅