Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- from Agregates import message_aggregates
- #class Decode_fragment():
- #konwersja do unsigned int/enum/bool dowolnej liczby bitów
- def decode_u_int(fragment):
- value = int(fragment, 2)
- return value
- #konwersja do signed int dowolnej liczby bitów
- def decode_s_int(fragment, bits):
- byte = int(fragment, 2)
- if byte > ((2**(bits-1)) - 1):
- value = (2**bits - byte) * (-1)
- else:
- value = byte
- return value
- #konwersja ciagów 6-bitowych na string w 6-bit ASCII
- 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
- #konwersja ciągu bitowego na format U1 i U2
- def decode_UX(fragment, type):
- i = 0
- number = int(fragment, 2)
- number = str(number)
- length = len(number)
- prefix = ""
- while i < length - type:
- prefix += number[i]
- i += 1
- if type == 1:
- suffix = number[length-1]
- if type == 2:
- suffix = number[length-2] + number[length-1]
- value = float(prefix+'.'+suffix)
- return value
- #konwersja ciągu bitowego na format I1, I2, I3, I4
- def decode_IX(fragment, bits, type):
- ##konwersja na bezwzgledna wartosc z signed int + zachowanie znaku
- sign = 0
- byte = int(fragment, 2)
- if byte > ((2**(bits-1)) - 1):
- number = (2**bits - byte)
- sign = 1
- else:
- number = byte
- ##jeśli długość stringa jest zbyt mała dodaj 0
- number = str(number)
- len_1 = len(number)
- if (len_1 - type) == (-3):
- number = '0000' + number
- if (len_1 - type) == (-2):
- number = '000' + number
- if (len_1 - type) == (-1):
- number = '00' + number
- if (len_1 - type) == (0):
- number = '0' + number
- len_2 = len(number)
- ##z tego zapisu wynikają dodane 0 powyżej, aby nie wyjść z zakresu
- if type == 1:
- suffix = number[len_2-1]
- if type == 2:
- suffix = number[len_2-2] + number[len_2-1]
- if type == 3:
- suffix = number[-3:-1] + number[len_2-1]
- if type == 4:
- suffix = number[-4:-1] + number[len_2-1]
- ## ustalenie prefixu
- prefix = ""
- i = 0
- while i < len_2 - type:
- prefix += number[i]
- print (prefix)
- i += 1
- ##ostateczna wartość z finalnym uwzględnieniem znaku
- value = float(prefix+'.'+suffix)
- if sign == 1:
- value = value * (-1)
- return value
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement