Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- def decode_s_int(fragment):
- byte = int(fragment, 2)
- bits = len(fragment)
- if byte > ((2**(bits-1)) - 1):
- value = (2**bits - byte) * (-1)
- else:
- value = byte
- return value
- def decode_u_int(fragment):
- value = int(fragment, 2)
- return value
- def decode_t(fragment):
- value = ""
- bits = len(fragment)
- max = math.floor(bits/6)
- i = 0
- while i < max:
- x = fragment[6*i:6*i+6]
- y = int(x, 2)
- if y < 32:
- z = chr(y+64)
- if y > 32:
- z = chr(y)
- value += z
- i += 1
- return value
- def decode_UX(fragment, type):
- ## jeżeli jakimś cudem się zdarzy, że fragment jest pusty, to to nas chroni :D
- if len(fragment) == 0:
- fragment = '0'
- number = str(int(fragment, 2))
- prefix = ""
- length = len(number)
- if length - type == -1:
- value = float('.0' + number)
- if length - type > -1:
- prefix = number[0:-(type)]
- suffix = number[-(type):]
- value = float(prefix+'.'+suffix)
- return value
- def decode_IX(fragment, type):
- ##konwersja na bezwzgledna wartosc z signed int + zachowanie znaku
- sign = 0
- bits = len(fragment)
- ## jeżeli jakimś cudem się zdarzy, że fragment jest pusty, to to nas chroni :D
- if len(fragment) == 0:
- fragment = '0'
- bits = 1
- byte = int(fragment, 2)
- if byte > ((2**(bits-1)) - 1):
- number = (2**bits - byte)
- sign = 1
- else:
- number = byte
- number = str(number)
- length = len(number)
- if (length - type) == (-3):
- value = float('.000'+ number)
- if (length - type) == (-2):
- value = float('.00'+ number)
- if (length - type) == (-1):
- value = float('.0'+ number)
- if length - type > -1:
- prefix = number[0:(-type)]
- suffix = number[(-type):]
- value = float(prefix+'.'+suffix)
- if sign == 1:
- value = value * (-1)
- return value
- fragment = '101010000101110110010010111011100100101011110';
- decoded_fragment1 = decode_s_int(fragment);
- decoded_fragment2 = decode_u_int(fragment);
- decoded_fragment3 = decode_t(fragment);
- decoded_fragment4_1 = decode_UX(fragment, 1);
- decoded_fragment4_2 = decode_UX(fragment, 2);
- decoded_fragment5_1 = decode_IX(fragment, 1);
- decoded_fragment5_2 = decode_IX(fragment, 2);
- decoded_fragment5_3 = decode_IX(fragment, 3);
- decoded_fragment5_4 = decode_IX(fragment, 4);
- print(decoded_fragment2);
- print(decoded_fragment3);
- print(decoded_fragment1);
- print(decoded_fragment4_1);
- print(decoded_fragment4_2);
- print(decoded_fragment5_1);
- print(decoded_fragment5_2);
- print(decoded_fragment5_3);
- print(decoded_fragment5_4);
- type_dictionary = {
- 'u': decode_u_int(fragment),
- 'e': decode_u_int(fragment),
- 'b': decode_u_int(fragment),
- 'x': "empty",
- 't': decode_t(fragment),
- 's': decode_s_int(fragment),
- 'I1': decode_IX(fragment, 1),
- 'I2': decode_IX(fragment, 2),
- 'I3': decode_IX(fragment, 3),
- 'I4': decode_IX(fragment, 4),
- 'U1': decode_UX(fragment, 1),
- 'U2': decode_UX(fragment, 2),
- 'd': "Binary Data"
- }
- print(" ");
- print(" ");
- print(type_dictionary['b']);
- print(type_dictionary['t']);
- print(type_dictionary['s']);
- print(type_dictionary['U1']);
- print(type_dictionary['U2']);
- print(type_dictionary['I1']);
- print(type_dictionary['I2']);
- print(type_dictionary['I3']);
- print(type_dictionary['I4']);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement