Encode bytes to a base58-encoded string
(b)
| 30 | pass |
| 31 | |
| 32 | def encode(b): |
| 33 | """Encode bytes to a base58-encoded string""" |
| 34 | |
| 35 | # Convert big-endian bytes to integer |
| 36 | n = int('0x0' + binascii.hexlify(b).decode('utf8'), 16) |
| 37 | |
| 38 | # Divide that integer into bas58 |
| 39 | res = [] |
| 40 | while n > 0: |
| 41 | n, r = divmod(n, 58) |
| 42 | res.append(B58_DIGITS[r]) |
| 43 | res = ''.join(res[::-1]) |
| 44 | |
| 45 | # Encode leading zeros as base58 zeros |
| 46 | czero = 0 |
| 47 | pad = 0 |
| 48 | for c in b: |
| 49 | if c == czero: |
| 50 | pad += 1 |
| 51 | else: |
| 52 | break |
| 53 | return B58_DIGITS[0] * pad + res |
| 54 | |
| 55 | def decode(s): |
| 56 | """Decode a base58-encoding string, returning bytes""" |