姜鹏辉的个人博客 GreyNius

【Python】将字符串中的16进制进行提取转换

2020-09-23

字符串形式的进制转换

假设现在有一段字符串为\x08\x00E\x00\x05\xdc\x7f\xf3@,字符串中既包含16进制,也包含正常的字符,需要进行格式的统一。

字符串转16进制

def str_to_hex(s):
    return ' '.join([hex(ord(c)).replace('0x', '').zfill(2) for c in s])

运行结果如下

08 00 45 00 05 dc 7f f3 40

也可以去掉replace及后面的部分,后者转二进制同理

0x8 0x0 0x45 0x0 0x5 0xdc 0x7f 0xf3 0x40

字符串转二进制

def str_to_bin(s):
    return ' '.join([bin(ord(c)).replace('0b', '').zfill(8) for c in s])

运行结果如下

00001000 00000000 01000101 00000000 00000101 11011100 01111111 11110011 01000000

关于ord函数

将字符转为ASCII码,仅能传入一个字符,传多个会报错

>>>ord('a')
97
>>> ord('b')
98
>>> ord('c')
99

直接调用库

这个方法是后来才看到的,需要在前面加个b表示成b’\x08\x00E\x00\x05\xdc\x7f\xf3@’`,同样的转换结果也是b的形式

import binascii
print(binascii.b2a_hex(b'\x08\x00E\x00\x05\xdc\x7f\xf3@'))

结果

b'0800450005dc7ff340'

Comments

Content