def numberToBase(n, b):
if n == 0:
return [0]
digits = []
while n:
digits.append(int(n % b))
n //= b
result = digits[::-1]
str_result = ''.join(str(x) for x in result)
return str_result
# return ''.join('{}'.format(digits[::-1]))
# return digits[::-1]
def prependZeros(input, n=8):
while len(input) % n > 0:
input = '0'+input
return input
l = [29165720900,
36028212903391219,
7777337833662777998,
300451275870959962186,
344367938903746579483,
188894666070460362457135,
1606929535271984790707306,
5076208824362775240604629512853,
60643020435392382204634988156634119,
30505590073095723357902050166506394779697744603760138107470909529025379960]
length = 8
for l_in in l:
print('----{} : ------'.format(l_in))
for orig_base in range(10,37):
bin_string_og = numberToBase(int(str(l_in), orig_base), 2)
bin_string = prependZeros(bin_string_og, length)
input_l = [bin_string[i:i+length] for i in range(0,len(bin_string),length)]
input_c = [chr(int(c,base=2)) for c in input_l]
print(''.join(input_c))
ZGVmIG51bWJlclRvQmFzZShuLCBiKToKICAgIGlmIG4gPT0gMDoKICAgICAgICByZXR1cm4gWzBdCiAgICBkaWdpdHMgPSBbXQogICAgd2hpbGUgbjoKICAgICAgICBkaWdpdHMuYXBwZW5kKGludChuICUgYikpCiAgICAgICAgbiAvLz0gYgogICAgcmVzdWx0ID0gZGlnaXRzWzo6LTFdCiAgICBzdHJfcmVzdWx0ID0gJycuam9pbihzdHIoeCkgZm9yIHggaW4gcmVzdWx0KQogICAgcmV0dXJuIHN0cl9yZXN1bHQKICAgICAgICAjICAgICByZXR1cm4gJycuam9pbigne30nLmZvcm1hdChkaWdpdHNbOjotMV0pKQojICAgICByZXR1cm4gZGlnaXRzWzo6LTFdCgpkZWYgcHJlcGVuZFplcm9zKGlucHV0LCBuPTgpOiAKICB3aGlsZSBsZW4oaW5wdXQpICUgbiA+IDA6IAogICAgaW5wdXQgPSAnMCcraW5wdXQKICByZXR1cm4gaW5wdXQKICAKICAKbCA9IFsyOTE2NTcyMDkwMCwKMzYwMjgyMTI5MDMzOTEyMTksCjc3NzczMzc4MzM2NjI3Nzc5OTgsCjMwMDQ1MTI3NTg3MDk1OTk2MjE4NiwKMzQ0MzY3OTM4OTAzNzQ2NTc5NDgzLAoxODg4OTQ2NjYwNzA0NjAzNjI0NTcxMzUsCjE2MDY5Mjk1MzUyNzE5ODQ3OTA3MDczMDYsCjUwNzYyMDg4MjQzNjI3NzUyNDA2MDQ2Mjk1MTI4NTMsCjYwNjQzMDIwNDM1MzkyMzgyMjA0NjM0OTg4MTU2NjM0MTE5LAozMDUwNTU5MDA3MzA5NTcyMzM1NzkwMjA1MDE2NjUwNjM5NDc3OTY5Nzc0NDYwMzc2MDEzODEwNzQ3MDkwOTUyOTAyNTM3OTk2MF0KICAKbGVuZ3RoID0gOAogIApmb3IgbF9pbiBpbiBsOiAKCXByaW50KCctLS0te30gOiAtLS0tLS0nLmZvcm1hdChsX2luKSkKCWZvciBvcmlnX2Jhc2UgaW4gcmFuZ2UoMTAsMzcpOiAKCSAgYmluX3N0cmluZ19vZyA9IG51bWJlclRvQmFzZShpbnQoc3RyKGxfaW4pLCBvcmlnX2Jhc2UpLCAyKQoJICBiaW5fc3RyaW5nID0gcHJlcGVuZFplcm9zKGJpbl9zdHJpbmdfb2csIGxlbmd0aCkKCSAgaW5wdXRfbCA9IFtiaW5fc3RyaW5nW2k6aStsZW5ndGhdIGZvciBpIGluIHJhbmdlKDAsbGVuKGJpbl9zdHJpbmcpLGxlbmd0aCldCgkgIGlucHV0X2MgPSBbY2hyKGludChjLGJhc2U9MikpIGZvciBjIGluIGlucHV0X2xdCgkgIHByaW50KCcnLmpvaW4oaW5wdXRfYykp