Advertisement
martaczaska

ble

May 24th, 2021
971
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.52 KB | None | 0 0
  1. import math
  2.  
  3. def decode_s_int(fragment):
  4.     byte = int(fragment, 2)
  5.     bits = len(fragment)
  6.     if byte > ((2**(bits-1)) - 1):
  7.         value = (2**bits - byte) * (-1)
  8.     else:
  9.         value = byte
  10.     return value
  11.    
  12. def decode_u_int(fragment):
  13.     value = int(fragment, 2)
  14.     return value
  15.    
  16. def decode_t(fragment):
  17.     value = ""
  18.     bits = len(fragment)
  19.     max = math.floor(bits/6)
  20.     i = 0
  21.     while i < max:
  22.         x = fragment[6*i:6*i+6]
  23.         y = int(x, 2)
  24.         if y < 32:
  25.             z = chr(y+64)
  26.         if y > 32:
  27.             z = chr(y)
  28.         value += z
  29.         i += 1
  30.     return value
  31.    
  32. def decode_UX(fragment, type):
  33.     ## jeżeli jakimś cudem się zdarzy, że fragment jest pusty, to to nas chroni :D
  34.     if len(fragment) == 0:
  35.         fragment = '0'
  36.     number = str(int(fragment, 2))
  37.     prefix = ""
  38.     length = len(number)
  39.     if length - type == -1:
  40.         value = float('.0' + number)
  41.     if length - type > -1:
  42.         prefix = number[0:-(type)]
  43.         suffix = number[-(type):]
  44.         value = float(prefix+'.'+suffix)
  45.     return value
  46.    
  47. def decode_IX(fragment, type):
  48.     ##konwersja na bezwzgledna wartosc z signed int + zachowanie znaku
  49.     sign = 0
  50.     bits = len(fragment)
  51.     ## jeżeli jakimś cudem się zdarzy, że fragment jest pusty, to to nas chroni :D
  52.     if len(fragment) == 0:
  53.         fragment = '0'
  54.         bits = 1
  55.  
  56.     byte = int(fragment, 2)
  57.     if byte > ((2**(bits-1)) - 1):
  58.         number = (2**bits - byte)
  59.         sign = 1
  60.     else:
  61.         number = byte
  62.     number = str(number)
  63.     length = len(number)
  64.  
  65.     if (length - type) == (-3):
  66.         value = float('.000'+ number)
  67.     if (length - type) == (-2):
  68.         value = float('.00'+ number)
  69.     if (length - type) == (-1):
  70.         value = float('.0'+ number)
  71.     if length - type > -1:
  72.         prefix = number[0:(-type)]
  73.         suffix = number[(-type):]
  74.         value = float(prefix+'.'+suffix)
  75.        
  76.     if sign == 1:
  77.         value = value * (-1)
  78.     return value
  79.  
  80. fragment = '101010000101110110010010111011100100101011110';
  81. decoded_fragment1 = decode_s_int(fragment);
  82. decoded_fragment2 = decode_u_int(fragment);
  83. decoded_fragment3 = decode_t(fragment);
  84. decoded_fragment4_1 = decode_UX(fragment, 1);
  85. decoded_fragment4_2 = decode_UX(fragment, 2);
  86. decoded_fragment5_1 = decode_IX(fragment, 1);
  87. decoded_fragment5_2 = decode_IX(fragment, 2);
  88. decoded_fragment5_3 = decode_IX(fragment, 3);
  89. decoded_fragment5_4 = decode_IX(fragment, 4);
  90.  
  91. print(decoded_fragment2);
  92. print(decoded_fragment3);
  93. print(decoded_fragment1);
  94. print(decoded_fragment4_1);
  95. print(decoded_fragment4_2);
  96. print(decoded_fragment5_1);
  97. print(decoded_fragment5_2);
  98. print(decoded_fragment5_3);
  99. print(decoded_fragment5_4);
  100.  
  101. type_dictionary = {
  102.         'u': decode_u_int(fragment),
  103.         'e': decode_u_int(fragment),
  104.         'b': decode_u_int(fragment),
  105.         'x': "empty",
  106.         't': decode_t(fragment),
  107.         's': decode_s_int(fragment),
  108.         'I1': decode_IX(fragment, 1),
  109.         'I2': decode_IX(fragment, 2),
  110.         'I3': decode_IX(fragment, 3),
  111.         'I4': decode_IX(fragment, 4),
  112.         'U1': decode_UX(fragment, 1),
  113.         'U2': decode_UX(fragment, 2),
  114.         'd': "Binary Data"
  115.     }
  116. print(" ");
  117. print(" ");
  118. print(type_dictionary['b']);
  119. print(type_dictionary['t']);
  120. print(type_dictionary['s']);
  121. print(type_dictionary['U1']);
  122. print(type_dictionary['U2']);
  123. print(type_dictionary['I1']);
  124. print(type_dictionary['I2']);
  125. print(type_dictionary['I3']);
  126. print(type_dictionary['I4']);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement