Как преобразовать целое число в base58? - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть десятичное число, и я хочу показать его на экране в виде строки base58.Вот что у меня уже есть:

>>> from base58 import b58encode
>>> b58encode('33')
'4tz'

Это кажется правильным, но, поскольку число меньше 58, не должна ли результирующая строка base58 быть только одним символом?Я должен пропустить какой-то шаг.Я думаю, это потому, что я передаю строку «33», а не число 33.

Когда я передаю прямое целое число, я получаю ошибку:

>>> b58encode(33)
TypeError: a bytes-like object is required (also str), not 'int'

В основном яхочу закодировать число в base58, чтобы оно использовало как можно меньше символов ...

1 Ответ

0 голосов
/ 09 декабря 2018

base58.b58encode ожидает байты или строку, поэтому преобразуйте 33 в байты, затем закодируйте:

>>> base58.b58encode(33)
Traceback (most recent call last):
...
TypeError: a bytes-like object is required (also str), not 'int'
>>> i = 33
>>> bs = i.to_bytes(1, sys.byteorder)
>>> bs
b'!'
>>> base58.b58encode(bs)
b'a'
...