字符串形式的进制转换
假设现在有一段字符串为\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'