这题有坑,一开始我以为是转换字符的ASCII码,弄了半天才清楚是字符本身所代表的十六进制数,由此引出其它的字符怎么处理,才看到是不处理,题目不说清楚

import sys
alist=['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f']#巧了,下标刚好对应元素值,若不然得用字典了
for line in sys.stdin:
    astr=line.strip().replace(" ",'')
    blt,clt=[],[]
    for i in range(len(astr)):
        if i%2==0:
            blt.append(astr[i])
        else:
            clt.append(astr[i])
    blt.sort();clt.sort()
    bstr='';j=0;k=0
    for i in range(len(astr)):#该处还可以改进
        if i%2==0:
            bstr=bstr+blt[j]
            j+=1
        if i%2!=0:
            bstr=bstr+clt[k]
            k+=1
    res=''
    for i in bstr:
        if i.lower() in alist:
            i=alist.index(i.lower())
            binN=bin(i)
            binN="{0:0>4s}".format(binN[2:]) #右对齐输出4位的长度(1~15肯定不会超过4位),也可用rjust函数
            # print(binN) #排错测试用
            revN='0b'+''.join(list(reversed(binN)))
            # print(revN)
            res+=hex(int(revN,2)).upper()[2]
        else:
            res+=i
    print(res)