diff --git a/Zadanie3 b/Zadanie3 index d6c2191..1de6255 100644 --- a/Zadanie3 +++ b/Zadanie3 @@ -1,11 +1,43 @@ from sys import argv -def toString(binaryString): - return "".join([chr(int(binaryString[i:i+8],2)) for i in range(0,len(binaryString),8)]) - def toBinary(string): return "".join([format(ord(char),'#010b')[2:] for char in string]) +def binnahex(var): + all = {"0000": "0", + "0001": "1", + "0010": "2", + "0011": "3", + "0100": "4", + "0101": "5", + "0110": "6", + "0111": "7", + "1000": "8", + "1001": "9", + "1010": "A", + "1011": "B", + "1100": "C", + "1101": "D", + "1110": "E", + "1111": "F" + } + i = 0 + output = "" + + while (len(var) % 4 != 0): + var = "0" + var + + while (i < len(var)): + output = output + all[var[i:i + 4]] + i = i + 4 + + output = output.lstrip("0") + output = "0" if len(output) == 0 else output + + return output + +def toString(binaryString): + return "".join([chr(int(binaryString[i:i+8],2)) for i in range(0,len(binaryString),8)]) #XOR def xor(a, b): @@ -73,20 +105,25 @@ def decode(message_final,poly16): def encode(message, poly16): #konwersja z ascii do binarnego aa=toBinary(message) - + a=toString(aa) l_poly16 = len(poly16) - + + obroc = list(aa) + for i in range(l_poly16 - 1): + if obroc[i] == "0": + obroc[i] = "1" + elif obroc[i] == '1': + obroc[i] = "0" + + aa = "".join(obroc) + # Dodajemy n-1 "0" do wiadomosci - appended_message = aa + '0'*(l_poly16-1) + appended_message = aa + '0'*(l_poly16-1) remainder = divide(appended_message, poly16) - - message_final = aa + remainder - print("binarnie calosc : ", message_final) - #konwersja z binarnego do ascii - ab=toString(message_final) - print("w ascii : ", ab) - print("sprawdzenie : ") - decode(message_final, poly16) + ab=binnahex(remainder) + message_final = a + ab + print("calosc : ", message_final) + print("crc : ", ab)