#本程序没有考虑对0x的处理,请勿输入,直接输入16进制位即可
begin = input("起始点:")
end = input("结束点:") b_int0 = 0
e_int0 = 0 b_len = len(begin) e_len = len(end) dit0 = ['a','b','c','d','e','f']
dit1 = ['A','B','C','D','E','F']
dit = dit0[:] + dit1[:]
if begin>end or begin == end: #筛选条件,待补充,有漏洞,如‘FF’与‘1FF’
print("error!!")
else:
for i in range(b_len): #按照0x56 = 5*16+6的思路进行逐位运算
if begin[i] in dit:
for j in range(0,6,1):
if begin[i] == dit0[j]: #此处分两词典只是单纯适应原程序
b = 10 + j
if begin[i] == dit1[j]: #16进制有A~F,应分开筛选
b = 10 + j
elif int (begin[i]) <= 9:
b = int (begin[i])
b_len = b_len-1 #此处是为了降低运算位,从效果上看并不影响前面的range(b_len)
b = b*16**(b_len)
b_int0 += b
for i in range(e_len):
if end[i] in dit:
for j in range(0,6,1):
if end[i] == dit0[j]:
e = 10 + j
if end[i] == dit1[j]:
e = 10 + j
elif int (end[i]) <= 9:
e = int (end[i])
e_len = e_len-1
e = e*16**(e_len)
e_int0 += e
for i in range(b_int0,e_int0+1,1):
print(chr(i))
附:下列转载自:https://blog.csdn.net/gywtzh0889/article/details/71083459