python实现16进制字符串转ASCII字符

一行代码实现:

a = ''
''.join([chr(int(b, 16)) for b in [a[i:i+2] for i in range(0, len(a), 2)]])

分析

1.其中:

[a[i:i+2] for i in range(0, len(a), 2)]

意思就是从0开始到a长度的字符串,步长为2进行遍历,然后a[i:i+2]取前两个字符;这句话意思相当于将一个字符串分成两个字符为一组,再放到列表中

2.

[chr(int(b, 16)) for b in [a[i:i+2] for i in range(0, len(a), 2)]]

int(b,16)表示b为16进制的数,转化为10进制的数,例如:

1
2
print(int('f',16))
#输出15

即将每个16进制的数转化为10进制,然后再用chr()将10进制转化为ASCII字符

3.

''.join

将转换后的字符进行拼接,例如:

1
2
3
4
5

a = ['a','b','c','d']
a = ''.join(a)
print(a)
#输出abcd