def get_code_string(base): if base == 2: return '01' elif base == 10: return b'0123456789' elif base == 16: return b'0123456789abcdef' elif base == 32: return b'abcdefghijklmnopqrstuvwxyz234567' elif base == 58: return b'123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz' elif base == 256: return b''.join([i2b(x) for x in range(256)]) else: raise ValueError("Invalid base!")
def bin_to_b58check(inp,magicbyte=0): inp_fmtd = i2b(magicbyte) + inp leadingzbytes = len(re.match(b'^\x00*',inp_fmtd).group(0)) checksum = bin_dbl_sha256(inp_fmtd)[:4] return b'1' * leadingzbytes + changebase(inp_fmtd+checksum,256,58)
def num_to_var_int(x): x = int(x) if x < 253: return i2b(x) elif x < 65536: return i2b(253) + encode(x,256,2)[::-1] elif x < 4294967296: return i2b(254) + encode(x,256,4)[::-1] else: return i2b(255) + encode(x,256,8)[::-1]
def bin_to_b58check(inp, magicbyte=0): inp_fmtd = i2b(magicbyte) + inp leadingzbytes = len(re.match(b'^\x00*', inp_fmtd).group(0)) checksum = bin_dbl_sha256(inp_fmtd)[:4] return b'1' * leadingzbytes + changebase(inp_fmtd + checksum, 256, 58)
def num_to_var_int(x): x = int(x) if x < 253: return i2b(x) elif x < 65536: return i2b(253) + encode(x, 256, 2)[::-1] elif x < 4294967296: return i2b(254) + encode(x, 256, 4)[::-1] else: return i2b(255) + encode(x, 256, 8)[::-1]