Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. class DataView():
  2. def __init__(self, buffer):
  3. self.buffer = [bytes(element) for element in buffer]
  4.  
  5. def getUint8(self, index):
  6. try:
  7. return int.from_bytes(int.from_bytes(self.buffer[index], 'big').to_bytes(1, 'little'), 'big')
  8. except OverflowError:
  9. if int.from_bytes(self.buffer[index], 'big') <= 65535:
  10. return int.from_bytes(int.from_bytes(self.buffer[index], 'big').to_bytes(2, 'little'), 'little') // 256
  11. else:
  12. return int.from_bytes(int.from_bytes(self.buffer[index], 'big').to_bytes(4, 'little'), 'big') // 4294967296
  13.  
  14. def setUint8(self, index, number):
  15. if number > 255 or number < 0:
  16. number = 0
  17. self.buffer[index] = number.to_bytes(1, 'little')
  18.  
  19. def getUint16(self, index):
  20. try:
  21. if int.from_bytes(self.buffer[index], 'big') <= 255:
  22. return int.from_bytes(int.from_bytes(self.buffer[index], 'big').to_bytes(2, 'little'), 'big')
  23. else:
  24. return int.from_bytes(int.from_bytes(self.buffer[index], 'big').to_bytes(2, 'little'), 'big')
  25. except OverflowError:
  26. return int.from_bytes(int.from_bytes(self.buffer[index], 'big').to_bytes(4, 'little'), 'big') // 65536
  27.  
  28.  
  29. def setUint16(self, index, number):
  30. if number > 65535 or number < 0:
  31. number = 0
  32. self.buffer[index] = number.to_bytes(2, 'little')
  33.  
  34. def getUint32(self, index):
  35. return int.from_bytes(int.from_bytes(self.buffer[index], 'big').to_bytes(4, 'little'), 'big')
  36.  
  37. def setUint32(self, index, number):
  38. if number > 4294967295 or number < 0:
  39. number = 0
  40. self.buffer[index] = number.to_bytes(4, 'little')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement