擅长:python、mysql、java
<p>这里有一个可能的解决方法。我认为您的bug来自于对python类型和可重用性定义的混淆。<br/>
我已经修改了基本的16个字母表,它现在是一个项目列表。然后我还修改了一点函数以考虑到这一点,它看起来很有效</p>
<pre><code>def v2r(num, alphabet):
"""Convert base 10 number into a string of a custom base (alphabet)."""
alphabet_length = len(alphabet)
result = []
while num > 0:
result = [alphabet[num % alphabet_length]] + result
num = num // alphabet_length
return result
def r2v(data, alphabet):
"""Convert string of a custom base (alphabet) back into base 10 number."""
alphabet_length = len(alphabet)
num = 0
for char in data:
num = alphabet_length * num + alphabet.index(char)
return num
alphabet = [
'x0','x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8',
'x9', 'xA', 'xB', 'xC', 'xD', 'xE', 'xF'
]
base16 = v2r(255, alphabet)
base10 = r2v(base16, alphabet)
print(''.join(base16), base10)
# xFxF 255
</code></pre>
<p>以下是OP的评论:
只需声明以下字母表:</p>
<pre><code>hexa = '0123456789abcdef'
alphabet = [
a+b for a in hexa for b in hexa
]
</code></pre>