-
Notifications
You must be signed in to change notification settings - Fork 943
/
Copy pathtobinary.py
78 lines (70 loc) · 1.75 KB
/
tobinary.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
def decimalToBinary(decimal):
decimal = str(decimal)
if '.' in decimal: integral, fractional = decimal.split('.')
else:
integral = decimal
fractional = 0
binaryNo = ''
if integral:
integral = int(integral)
while integral > 0:
binaryNo += str(integral % 2)
integral = integral // 2
binaryNo = binaryNo[::-1]
if fractional:
fractional = '0.' + fractional
binaryNo += '.'
for i in range(20):
prod = float(fractional) * 2
num = int(prod)
fractional = prod - num
binaryNo += str(num)
return binaryNo
def octalToBinary(octal):
octToBin = {
'0': '000',
'1': '001',
'2': '010',
'3': '011',
'4': '100',
'5': '101',
'6': '110',
'7': '111',
'.': '.'
}
binary = ''
for o in str(octal):
try:
binary += octToBin[o]
except (KeyError, ValueError):
return 'Invalid Input'
return binary
def hexToBinary(hex):
hexToBin = {
'0': '0000',
'1': '0001',
'2': '0010',
'3': '0011',
'4': '0100',
'5': '0101',
'6': '0110',
'7': '0111',
'8': '1000',
'9': '1001',
'a': '1010',
'b': '1011',
'c': '1100',
'd': '1101',
'e': '1110',
'f': '1111',
'.': '.'
}
binary = ''
for h in str(hex):
try:
if h.isalpha():
h = h.lower()
binary += hexToBin[h]
except (KeyError, ValueError):
return 'Invalid Input'
return binary