开发过程中遇到这个功能,由于输入比较简单,不要求要考更复杂的场景,于是把对应简单的实现记录一下.
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import math
def decimal2arbitrarybase(decimal_num: int, base: int) -> list[int]:
if decimal_num < 0 or base <= 0:
raise ValueError(f'not valid')
if decimal_num == 0:
return [0]
res = []
while decimal_num:
res.append(decimal_num % base)
decimal_num = decimal_num // base
return res[::-1]
def arbitrarybase2decimal(arbitray: list[int], base: int) -> int:
if len(arbitray) == 0 or base <= 0:
raise ValueError(f'not valid')
for item in arbitray:
if item < 0:
raise ValueError(f'not valid')
res = 0
for idx, val in enumerate(arbitray[::-1]):
res += val*(base ** idx)
return res
if __name__ == '__main__':
print(decimal2arbitrarybase(10, 2))
print(arbitrarybase2decimal([1,0,1,0], 2))
1353

被折叠的 条评论
为什么被折叠?



