这题有坑,一开始我以为是转换字符的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)