-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhexadecimal.py
59 lines (51 loc) · 1.45 KB
/
hexadecimal.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
class Solution(object):
def toHex(self, num):
"""
:type num: int
:rtype: str
"""
binary=[0]*32
if num==0:
return '0'
elif num>0:
i=0
while(num>0):
binary[i]=(num%2)
num/=2
i+=1
binary.reverse()
ans=self.tohexa(binary)
else:
i=0
num*=-1
num=(num-1)
while(num>0):
binary[i]=(num%2)
num/=2
i+=1
binary.reverse()
for i in range(32):
if binary[i]==1:
binary[i]=0
else:
binary[i]=1
ans=self.tohexa(binary)
return ''.join(str(i) for i in ans)
def tohexa(self,binary):
print binary
map={10:'a',11:'b',12:'c',13:'d',14:'e',15:'f'}
hexa=[]
for i in range(31,2,-4):
val=binary[i]*1+(binary[i-1]*2)+(binary[i-2]*4)+(binary[i-3]*8)
if val>=0 and val<=9:
hexa.append(val)
else:
hexa.append(map[val])
hexa.reverse()
for i in range(len(hexa)):
if hexa[i]==0:
continue
else:
hexa=hexa[i:len(hexa)]
break
return hexa