如何将Python中字节形式的十六进制直接转为字符串?
字节对象转十六进制字符串的解决方案
要把b'\x02\x08\x01\x00\x06\x0b'这类字节对象直接转成"28106b"这种十六进制字符串,你之前用的decode()和fromhex()方向不对:decode()是把字节按编码转成ASCII字符,fromhex()是把十六进制字符串转成字节,都不符合你的需求。
推荐两种简单可靠的方法:
方法一:使用内置的
hex()方法(Python 3.5+)
这是最简洁的方式,字节对象自带的hex()方法直接返回小写的十六进制字符串:b = b'\x02\x08\x01\x00\x06\x0b' hex_str = b.hex() print(hex_str) # 输出: 28106b要是需要大写的十六进制字符,加个
upper()就行:b.hex().upper()会得到"28106B"。方法二:用
binascii.hexlify
这个模块方法也能实现,先转成十六进制字节串,再解码成普通字符串:import binascii b = b'\x02\x08\x01\x00\x06\x0b' hex_str = binascii.hexlify(b).decode('utf-8') print(hex_str) # 输出: 28106b
这两种方法都会逐个处理字节对象里的每个字节,将其转换为对应的十六进制字符,完全符合你的项目规格要求,不会出现ASCII字符的问题。
内容的提问来源于stack exchange,提问作者Will
相关产品推荐
相关产品推荐

