我正在研究一个将整数转换为十六进制的函数。两个人的赞美和处理否定有很多工作要做,但现在我正在努力让核心逻辑发挥作用。这就是我所拥有的:
def intToHexaBin(num):
num = abs(num)
symdict={10:"A",11:"B",12:"C",13:"D",14:"E",15:"F"}
rlist=[]
while(num!=0):
rlist.append(str(num%16))
num//=16
rlist=rlist[::-1]
for i in rlist:
if int(i) in symdict:
print("Not sure how to swap list element for a dict value")
print(''.join(rlist))
intToHexaBin(4512)
我希望此示例的输出看起来像这样:
11A0
我正在尝试使用循环来遍历rlist
并检查rlist
中的元素是否与symdict
中的某个键匹配。如果是的话,我想将list元素交换为匹配的字典值。因此,如果在列表中找到10
,则会在字典中找到它,并且列表中的元素将更改为"A"
匹配的dict值。我不知道从哪里开始
答案 0 :(得分:1)
您可以使用enumerate
来迭代(index, value)
个元组。对于每个值,您可以使用dict.get
从symdict
获取值或使用作为第二个参数传递的默认值。然后只需将get
返回的内容分配给rlist
中的索引:
def intToHexaBin(num):
num = abs(num)
symdict={10:"A",11:"B",12:"C",13:"D",14:"E",15:"F"}
rlist=[]
while(num!=0):
rlist.append(num%16)
num//=16
rlist=rlist[::-1]
print(rlist)
for idx, val in enumerate(rlist):
rlist[idx] = symdict.get(val, str(val))
print(''.join(rlist))
请注意,我已将rlist
更改为包含整数而不是字符串,因为symdict
中的键也是整数。
如果您只想将int
转换为十六进制表示,则可以使用hex
内置:
>>> hex(4512)
'0x11a0'