新闻  |   论坛  |   博客  |   在线研讨会
python中str、bytes、十六进制字符串的相互转换方法
电子禅石 | 2024-08-12 16:27:48    阅读:852   发布文章

在Python中,str(字符串)、bytes(字节序列)以及十六进制字符串

(通常以字符串形式存在,但内容表示十六进制数)之间的转换是非常常见的操作。

这里将详细说明它们之间的转换方法。


1. str 到 bytes 的转换

要将str(字符串)转换为bytes(字节序列),可以使用str的.encode()方法。

这个方法默认使用UTF-8编码将字符串转换成字节序列。


s = "hello"  

b = s.encode('utf-8')  # 使用UTF-8编码  

print(b)  # 输出: b'hello'

如果字符串包含非ASCII字符,确保使用正确的编码以避免UnicodeEncodeError。


2. bytes 到 str 的转换

将bytes(字节序列)转换回str(字符串),可以使用bytes的.decode()方法。

这个方法默认也使用UTF-8编码。


b = b'hello'  

s = b.decode('utf-8')  

print(s)  # 输出: hello

如果bytes数据不是用UTF-8编码的,你需要指定正确的编码来避免UnicodeDecodeError。


3. str 表示的十六进制字符串到 bytes 的转换

如果有一个十六进制字符串(即,字符串中的字符是十六进制数,如"48656c6c6f"表示"hello"),可以使用bytes.fromhex()方法将其转换为bytes。


hex_str = "48656c6c6f"  

b = bytes.fromhex(hex_str)  

print(b)  # 输出: b'hello'

4. bytes 到 十六进制字符串(str)的转换

将bytes转换为十六进制字符串,可以使用bytes的.hex()方法。


b = b'hello'  

hex_str = b.hex()  

print(hex_str)  # 输出: 48656c6c6f

总结

使用.encode()将str转换为bytes。

使用.decode()将bytes转换为str。

使用bytes.fromhex()将十六进制字符串(str)转换为bytes。

使用.hex()将bytes转换为十六进制字符串(str)。

注意:在进行编码和解码操作时,应确保使用正确的字符编码(如UTF-8),

以避免出现编码错误。

————————————————


                        

原文链接:https://blog.csdn.net/AOMGyz/article/details/140373240


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
属于自己的技术积累分享,成为嵌入式系统研发高手。
推荐文章
最近访客