Source code for eolib.data.string_encoding_utils

[docs] def encode_string(bytes: bytearray) -> None: """ Encodes a string by inverting the bytes and then reversing them. This is an in-place operation. Args: bytes (bytearray): The byte array to encode. """ _invert_characters(bytes) bytes.reverse()
[docs] def decode_string(bytes: bytearray) -> None: """ Decodes a string by reversing the bytes and then inverting them. This is an in-place operation. Args: bytes (bytearray): The byte array to decode. """ bytes.reverse() _invert_characters(bytes)
def _invert_characters(bytes: bytearray) -> None: """ Inverts characters in a byte array. This is an in-place operation. Args: bytes (bytearray): The byte array to invert. """ flippy = len(bytes) % 2 == 1 for i in range(len(bytes)): c = bytes[i] f = 0 if flippy: f = 0x2E if c >= 0x50: f *= -1 if 0x22 <= c <= 0x7E: bytes[i] = 0x9F - c - f flippy = not flippy