Python中如何将十六进制格式字符串转换为字节串?
Python 十六进制字符串转字节串的正确方法
你用str.encode()的方式不对,这个方法只是把字符串本身的字符编码成字节,而不是解析十六进制内容。要把十六进制格式的字符串转成对应的字节串,直接用Python内置的bytes.fromhex()方法就行。
示例代码
string = 'b36372908bd6f0b5898a38879c7d88436590c3e786568db84a3948408e81b4c6' my_byte_string = bytes.fromhex(string) print(my_byte_string)
运行后得到的结果就是你要的目标字节串:
b'\xb3cr\x90\x8b\xd6\xf0\xb5\x89\x8a8\x87\x9c}\x88Ce\x90\xc3\xe7\x86V\x8d\xb8J9H@\x8e\x81\xb4\xc6'
为什么之前的方法不行?
str.encode(string)(或者直接string.encode())会把字符串里的每个字符按默认的UTF-8编码转成字节。比如原字符串里的'b'会被转成0x62,'3'转成0x33,最终得到的是原十六进制字符串的字节形式,而不是解析十六进制后对应的字节内容,这就是你之前得到错误结果的原因。
内容的提问来源于stack exchange,提问作者Weber Felipe
相关产品推荐
相关产品推荐

