darabonba/utils/bytes.py (27 lines of code) (raw):

import base64 from typing import Union class Bytes: @staticmethod def from_(data: Union[str, bytes], encoding: str) -> bytes: if encoding == 'base64': if isinstance(data, str): data = data.encode('utf-8') return base64.b64decode(data) elif encoding == 'hex': if isinstance(data, str): return bytes.fromhex(data) elif encoding == 'utf-8': if isinstance(data, bytes): return data if isinstance(data, str): return data.encode('utf-8') elif encoding == 'utf-16': if isinstance(data, bytes): return data.decode('utf-16').encode('utf-16') elif encoding == 'utf-32': if isinstance(data, bytes): return data.decode('utf-32').encode('utf-32') elif encoding == 'binary': if isinstance(data, str): return bytes(int(data[i:i+8], 2) for i in range(0, len(data), 8)) raise ValueError(f"Unsupported encoding: {encoding}")