'''for an example of printing a string of bits in binary, octal, hex, and base64 Creates a string of 120 random bits by decoding a base64 string (flawed, because I skipped two characters). Then, converts the string to a bytes array. ''' import random import base64 import math # flawed, incomplete base64_charset = 'ABCDEFGHIJKLMNOPQRSTUVXYZ' + 'abcdefghijklmnopqrstuvxyz' + '0123456789' # rand_chars = [ random.choice(base64_charset) for i in range(20) ] # rand_str = ''.join(rand_chars) # rand_bytes = bytes(rand_str,'utf-8') # rand_int = int.from_bytes(rand_bytes, 'little') rand_int = random.getrandbits(120) print(rand_int) ## printing bin_str = "{0:b}".format(rand_int) oct_str = "{0:o}".format(rand_int) dec_str = "{}".format(rand_int) hex_str = "{0:x}".format(rand_int) b64_str = base64.encodebytes(rand_int.to_bytes(15,'big')) print([len(bin_str), len(oct_str), len(dec_str), len(hex_str), len(b64_str)]) def print_rand_bits(n): rand_int = random.getrandbits(n) print(['rand_int',rand_int]) rand_bytes = rand_int.to_bytes(math.ceil(n/8), 'big') print(['rand_bytes',rand_bytes]) b64_str = base64.b64encode(rand_bytes) print(['b64_str',b64_str]) bin_str = "{0:b}".format(rand_int) oct_str = "{0:o}".format(rand_int) dec_str = "{}".format(rand_int) hex_str = "{0:x}".format(rand_int) print(['lengths',len(bin_str), len(oct_str), len(dec_str), len(hex_str), len(b64_str)]) print("bin: {}".format(bin_str)) print("oct: {}".format(oct_str)) print("dec: {}".format(dec_str)) print("hex: {}".format(hex_str)) print("b64: {}".format(b64_str)) print('================================================================') for n in range(20): print_rand_bits(6*n+6)