bytes.py 1.1 KB

123456789101112131415161718192021222324252627282930
  1. import base64
  2. from typing import Union
  3. class Bytes:
  4. @staticmethod
  5. def from_(data: Union[str, bytes], encoding: str) -> bytes:
  6. if encoding == 'base64':
  7. if isinstance(data, str):
  8. data = data.encode('utf-8')
  9. return base64.b64decode(data)
  10. elif encoding == 'hex':
  11. if isinstance(data, str):
  12. return bytes.fromhex(data)
  13. elif encoding == 'utf-8':
  14. if isinstance(data, bytes):
  15. return data
  16. if isinstance(data, str):
  17. return data.encode('utf-8')
  18. elif encoding == 'utf-16':
  19. if isinstance(data, bytes):
  20. return data.decode('utf-16').encode('utf-16')
  21. elif encoding == 'utf-32':
  22. if isinstance(data, bytes):
  23. return data.decode('utf-32').encode('utf-32')
  24. elif encoding == 'binary':
  25. if isinstance(data, str):
  26. return bytes(int(data[i:i+8], 2) for i in range(0, len(data), 8))
  27. raise ValueError(f"Unsupported encoding: {encoding}")