Change Directory
This commit is contained in:
42
librespot/standard/BytesInputStream.py
Normal file
42
librespot/standard/BytesInputStream.py
Normal file
@@ -0,0 +1,42 @@
|
||||
import struct
|
||||
|
||||
|
||||
class BytesInputStream:
|
||||
buffer: bytes
|
||||
endian: str
|
||||
|
||||
def __init__(self, buffer: bytes, endian: str = ">"):
|
||||
self.buffer = buffer
|
||||
self.endian = endian
|
||||
|
||||
def read(self, length: int = None) -> bytes:
|
||||
if length is None:
|
||||
length = len(self.buffer)
|
||||
buffer = self.buffer[:length]
|
||||
self.buffer = self.buffer[length:]
|
||||
return buffer
|
||||
|
||||
def read_byte(self) -> bytes:
|
||||
buffer = struct.unpack("s", self.buffer[:1])[0]
|
||||
self.buffer = self.buffer[1:]
|
||||
return buffer
|
||||
|
||||
def read_int(self) -> int:
|
||||
buffer = struct.unpack("{}i".format(self.endian), self.buffer[:4])[0]
|
||||
self.buffer = self.buffer[4:]
|
||||
return buffer
|
||||
|
||||
def read_short(self) -> int:
|
||||
buffer = struct.unpack("{}h".format(self.endian), self.buffer[:2])[0]
|
||||
self.buffer = self.buffer[2:]
|
||||
return buffer
|
||||
|
||||
def read_long(self) -> int:
|
||||
buffer = struct.unpack("{}q".format(self.endian), self.buffer[:8])[0]
|
||||
self.buffer = self.buffer[8:]
|
||||
return buffer
|
||||
|
||||
def read_float(self) -> float:
|
||||
buffer = struct.unpack("{}f".format(self.endian), self.buffer[:4])[0]
|
||||
self.buffer = self.buffer[4:]
|
||||
return buffer
|
||||
Reference in New Issue
Block a user