我创建了一个程序来用Python压缩“mac number”。 在这里,我试图根据这个规则来收缩连续的零。 但我在将“string”的最后一个索引作为最后一个字段时遇到了一些问题 如果最后一个字段有“0000”;它无法得到我所想的答案。 它在最后一个字段中给出两次答案,中间有双冒号(::)。 请帮我解决这个问题
这是我的编码部分:
hex_num = 'fe80:0d5e:0d2f:f180:f542:0d5e:00f0:f45d:3d5e:0000'
first_list = []
second_list = []
dec_value = ([(int(i,16)) for i in hex_num.split(":")])
print('list :',dec_value)
for i in range(len(dec_value) - 1):
if dec_value[i] == 0:
if dec_value[i] + dec_value[i + 1] == 0:
## print(dec_value[i], dec_value[i + 1])
pass
if dec_value[i + 1] != 0:
p = dec_value.index(dec_value[i + 1])
break
else:
## print(dec_value[i], dec_value[i + 1])
p = dec_value.index(dec_value[i])
first_list.append(dec_value[i])
for h in range(p, len(dec_value) - 1):
second_list.append(dec_value[h])
non_leading_zeros1 = ":".join([str(hex(h).replace("0x",'')) for h in first_list])
non_leading_zeros2 = ":".join([str(hex(h).replace("0x",'')) for h in second_list])
print(non_leading_zeros1 +'::'+ non_leading_zeros2)
输出:fe80:d5e:d2f:f180:f542:d5e:f0:f45d:3d5e::3d5e
根据mac号码或ipv6号码压缩规则,这是错误的
预期值:fe80:d5e:d2f:f180:f542:d5e:f0:f45d:3d5e::
目前没有回答
相关问题 更多 >
编程相关推荐