diff options
Diffstat (limited to 'dialoguer')
-rw-r--r-- | dialoguer/binary_conversion.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/dialoguer/binary_conversion.py b/dialoguer/binary_conversion.py new file mode 100644 index 0000000..a770812 --- /dev/null +++ b/dialoguer/binary_conversion.py @@ -0,0 +1,70 @@ +cls_str = type("string") +cls_int = type(1) +cls_byt = type(b'\x00') + +def convert_to_binary(data): + bin_data = None + if type(data) == cls_str: + n = '' + for s in data: + m = ord(s) + m = hex(m) + n += m.lstrip('0x') + bin_data = n + bin_data = int(bin_data, 16) + bin_data = bin(bin_data) + #bin_data = bin_data.lstrip('0b') + bin_data = bin_data.replace('b', '') + bin_data = ''.join(reversed(bin_data)) + bin_data = bin_data.zfill(8) + n = b'' + for b in bin_data: + m = int(b) + m = chr(m) + m = bytes(m, 'utf-8') + n += m + bin_data = n + elif type(data) == cls_int: + bin_data = bin(data) + bin_data = bin_data.lstrip('0b') + bin_data = bin_data.zfill(8) + n = b'' + for b in bin_data: + m = int(b) + m = chr(m) + m = bytes(m, 'utf-8') + n += m + bin_data = n + + return bin_data + +def convert_from_binary(bin_data, cls_type): + + if cls_type == cls_str: + n = '' + for b in bin_data: n = f'{b}{n}' + #for b in bin_data: n = f'{n}{b}' + data = n + data = int(data, 2) + data = hex(data) + data = data.lstrip('0x') + data = bytearray.fromhex(data) + data = data.decode() + data = ''.join(reversed(data)) + elif cls_type == cls_int: + n = '' + for b in bin_data: n = f'{n}{b}' + data = n + data = int(data, 2) + + return data + +if __name__ == '__main__': + print(convert_to_binary(3)) + print(convert_to_binary('3')) + + int_3 = b'\x00\x00\x00\x00\x00\x00\x01\x01' + str_3 = b'\x00\x00\x01\x01\x00\x00\x01\x01' + + print(convert_from_binary(int_3, cls_int)) + print(convert_from_binary(str_3, cls_str))
\ No newline at end of file |