From ca0f47e362c0643b3b959b19e93bdaf27f2855f2 Mon Sep 17 00:00:00 2001 From: Eggert Jung Date: Sun, 8 Nov 2020 18:32:40 +0100 Subject: [PATCH] task 9 --- src/sectubs/exercises.py | 43 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/src/sectubs/exercises.py b/src/sectubs/exercises.py index b4b12a0..ca6ccf2 100644 --- a/src/sectubs/exercises.py +++ b/src/sectubs/exercises.py @@ -4,7 +4,7 @@ class Exercise00: STUDENT_NAME = "Eggert Jung" def __init__(self, txt=""): - self.__txt = txt[:17] + "..." + self.__txt = txt @staticmethod def deadline(formatstr): @@ -13,7 +13,7 @@ class Exercise00: @property def txt(self): - return self.__txt + return self.__txt[:17] + "..." def format(self, mode): if mode == "order": @@ -35,3 +35,42 @@ class Exercise00: ret = ret + "{} = {}".format(items[0], items[1]) + "\n" return ret[:-1] + def __str__(self): + return b64_enc(self.__txt) + +def b64_enc_map(index): + if(index >= 0 and index < 26): + return chr(index + 0x41) # A-Z + elif(index >= 26 and index < 52): + return chr(index + 0x61 - 26) # a-z + elif(index >= 52 and index < 62): + return chr(index + 0x30 - 52) # 0-9 + elif(index == 62): + return '+' + elif(index == 63): + return '/' + else: + return '=' + +def b64_enc(str): + res = "" + + for c in [(str[i:i+3]) for i in range(0, len(str), 3)]: + c = bytes(c, 'utf-8') + bits = [-1,-1,-1,-1] + try: + bits[0] = (c[0] & 0xFC)>>2 + + bits[1] = ((c[0] & 0x03)<<4) + bits[1] = bits[1] + ((c[1] & 0xF0)>>4) + + bits[2] = ((c[1] & 0x0F)<<2) + bits[2] = bits[2] + ((c[2] & 0xC0)>>6) + + bits[3] = (c[2] & 0x3F) + except IndexError: + pass + for i in range(4): + res = res + b64_enc_map(bits[i]) + return res +