• 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

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个小时才写完, 好累…


展开全文
• &#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))

print(hex(10))


展开全文
• 在编写信息隐藏技术的时候，需要用到进制转换，用到的思想很简单 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实现任意进制转换器 主要以十进制作为桥梁，利用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]
• 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 进制转换 十进制转其他进制 #十进制数 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中的字母...
• 这段代码能够实现任意进制的数据转换，并且，超过四位的数字还会适用"_"进行分割，便于多位数据的阅读。 进制格式说明 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...

...

python 订阅