diff --git a/crc16.py b/crc16.py deleted file mode 100644 index 0a44f74..0000000 --- a/crc16.py +++ /dev/null @@ -1,85 +0,0 @@ -from poly import Polynomial -import sys -import ast - -Polynomial.n = 2 - -def normalize_byte(data): - while len(data) != 8: - if len(data) < 8: - data = str(0) + data - else: - data = data[1:] - return data - - -def encode(in_data): - data = in_data - data = list(data) - data_binary = [bin(ord(char)).replace('b', '') for char in data] - data_binary = [normalize_byte(byte) for byte in data_binary] - data_binary = [int(bit) for bit in list(''.join(data_binary))] - data_binary.reverse() - - M = [0] * 16 + data_binary - L = [0] * (len(data_binary)) + [1] * 16 - G = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1] - result_poly = Polynomial.divide(Polynomial.add(Polynomial(M), Polynomial(L)), Polynomial(G)) - result = result_poly.coefficients + [0] * (16 - len(result_poly.coefficients)) - - result.reverse() - data_binary.reverse() - data_binary = data_binary + result - data_binary = [data_binary[i:i+8] for i in range(0, len(data_binary), 8)] - data_binary = [int(''.join(map(str, byte)), 2) for byte in data_binary] - - fcs = [hex(byte) for byte in data_binary] - fcs = fcs[-2:] - - data = [chr(byte) for byte in data_binary] - data = ''.join(data[0:-2]) - - return data, fcs - - -def check_fcs(in_data, fcs): - data = in_data - data = list(data) - data_binary = [bin(ord(char)).replace('b', '') for char in data] - data_binary = [normalize_byte(byte) for byte in data_binary] - data_binary = [int(bit) for bit in list(''.join(data_binary))] - fcs_binary = [bin(int(in_hex, 16)).replace('b', '') for in_hex in fcs] - fcs_binary = [normalize_byte(byte) for byte in fcs_binary] - fcs_binary = [int(bit) for bit in list(''.join(fcs_binary))] - data_binary += fcs_binary - data_binary.reverse() - - C = [0] * 16 + data_binary - L = [0] * len(data_binary) + [1] * 16 - G = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1] - S = Polynomial.divide(Polynomial.add(Polynomial(C), Polynomial(L)), Polynomial(G)) - - if S.coefficients == []: - return True - - return False - - -def main(): - try: - if sys.argv[1] == '-e' or sys.argv[1] == '-encode': - arg, fcs = encode(sys.argv[2]) - print(arg, fcs) - print(check_fcs(arg, fcs)) # powinno zawsze zwracać true - elif sys.argv[1] == '-c' or sys.argv[1] == '-check': - arg = sys.argv[2] - fcs = ast.literal_eval(sys.argv[3]) - print(check_fcs(arg, fcs)) - else: - raise IndexError - except IndexError: - print("To encode: python3 CRC16.py -e [argument]\nTo check result: python3 CRC16.py -c [argument] [fcs]") - - -if __name__ == "__main__": - main() \ No newline at end of file