Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class DataView():
- def __init__(self, buffer):
- self.buffer = [bytes(element) for element in buffer]
- def getUint8(self, index):
- try:
- return int.from_bytes(int.from_bytes(self.buffer[index], 'big').to_bytes(1, 'little'), 'big')
- except OverflowError:
- if int.from_bytes(self.buffer[index], 'big') <= 65535:
- return int.from_bytes(int.from_bytes(self.buffer[index], 'big').to_bytes(2, 'little'), 'little') // 256
- else:
- return int.from_bytes(int.from_bytes(self.buffer[index], 'big').to_bytes(4, 'little'), 'big') // 4294967296
- def setUint8(self, index, number):
- if number > 255 or number < 0:
- number = 0
- self.buffer[index] = number.to_bytes(1, 'little')
- def getUint16(self, index):
- try:
- if int.from_bytes(self.buffer[index], 'big') <= 255:
- return int.from_bytes(int.from_bytes(self.buffer[index], 'big').to_bytes(2, 'little'), 'big')
- else:
- return int.from_bytes(int.from_bytes(self.buffer[index], 'big').to_bytes(2, 'little'), 'big')
- except OverflowError:
- return int.from_bytes(int.from_bytes(self.buffer[index], 'big').to_bytes(4, 'little'), 'big') // 65536
- def setUint16(self, index, number):
- if number > 65535 or number < 0:
- number = 0
- self.buffer[index] = number.to_bytes(2, 'little')
- def getUint32(self, index):
- return int.from_bytes(int.from_bytes(self.buffer[index], 'big').to_bytes(4, 'little'), 'big')
- def setUint32(self, index, number):
- if number > 4294967295 or number < 0:
- number = 0
- self.buffer[index] = number.to_bytes(4, 'little')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement