aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dialoguer/binary_conversion.py70
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