Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Scar32
- # DEVIXLER
- # this is my own take on a base1M converter.
- # this format can convert strings of bits starting at
- # 0 or 1 and can convert bits at any length even one
- # bit or even zero bits!
- import math
- import bitstring
- def bits2character(bits):
- character = 1114111
- for i in range(20):
- character -= int(bits[i])*2**i
- return chr(character)
- characters = '01'
- def character2bits(character):
- n = 1114111-ord(character)
- out = ''
- for l in range(20):
- char = int(n)%2
- out += characters[char]
- n = (n-char)/2
- return out
- def bits2string(bits):
- out = ''
- bits = bits+'1'+'0'*(20-len(bits)%20-1) # my format puts a 1 at the end of the bits followed by zeros
- for p in range(int((len(bits)+1)/20)):
- chunk = ''
- for s in range(20):
- chunk += bits[p*20+s]
- out += bits2character(chunk)
- print(str(p)+"/"+str(int((len(bits)+1)/20)))
- return out
- def string2bits(string):
- data = ''
- for i in string:
- data += character2bits(i)
- while data[-1] == '0':
- data = data[:-1]
- data = data[:-1]
- return data
- def stringcompactor(string): # puts the characters in a square grid
- out = ''
- cpr = int(math.sqrt(len(string)*2))
- cpc = int(len(string) / cpr)
- for c in range(cpc):
- for r in range(cpr):
- out += string[c*cpr+r]
- out += '\n'
- for i in range(len(string)-cpr*cpc):
- out += string[cpr*cpc+i]
- return out
- def read_bits(file_path):
- bits = bitstring.BitArray(filename=file_path)
- return bits.bin
- #pyperclip.copy(bits2string(read_bits('/yourfile.zip')))
- # demo
- print(bits2string(input('bits to string: ')))
- print(string2bits(input('string to bits: ')))
Advertisement
Add Comment
Please, Sign In to add comment