Python3中str与bytes互转

Python3中str与bytes互转

Python3中str与bytes互转

介绍

在Python中,字符串(str)和字节(bytes)是两种不同的数据类型。字符串是以Unicode字符组成的,而字节是以字节序列组成的。在进行网络传输、文件读写等操作时,通常需要将字符串转换为字节进行处理。本文将详细介绍在Python3中如何进行字符串和字节之间的相互转换。

字符串与字节的区别

在Python中,字符串是以Unicode字符组成的不可变序列,可以通过单引号或双引号来表示。而字节是以字节序列组成的不可变序列,可以通过b前缀来表示。例如:

s = 'Hello'  # 字符串
b = b'Hello' # 字节
Python

字符串和字节之间的主要区别如下:

  • 字符串是以Unicode字符组成,可以包含任意字符;
  • 字节是以字节序列组成,每个字节的值范围为0~255,表示二进制数据;
  • 字符串是不可变的,字节是可变的;
  • 字符串的长度由字符个数决定,字节的长度由字节个数决定。

str与bytes的相互转换

Python3提供了一些方法来实现字符串和字节之间的相互转换。

str转bytes

  • 使用encode()方法可以将字符串转换为字节。该方法需要指定编码方式,默认为UTF-8。例如:
s = 'Hello'
b = s.encode()  # 默认使用UTF-8编码
print(b)  # b'Hello'
Python
  • 使用指定的编码方式可以通过encode(encoding)来将字符串转换为字节。例如:
s = '你好'
b = s.encode('GBK')
print(b)  # b'\xc4\xe3\xba\xc3'
Python

bytes转str

  • 使用decode()方法可以将字节转换为字符串。该方法需要指定编码方式,需要与encode()方法使用的编码方式一致。例如:
b = b'Hello'
s = b.decode()  # 默认使用UTF-8解码
print(s)  # Hello
Python
  • 使用指定的编码方式可以通过decode(encoding)来将字节转换为字符串。例如:
b = b'\xc4\xe3\xba\xc3'
s = b.decode('GBK')
print(s)  # 你好
Python

示例代码

下面是一个完整的示例代码,展示了在Python3中字符串和字节之间的相互转换:

# str转bytes
def str_to_bytes(s):
    b = s.encode()
    return b

# bytes转str
def bytes_to_str(b):
    s = b.decode()
    return s

s = 'Hello'
b = str_to_bytes(s)
print(b)  # b'Hello'

s = '你好'
b = str_to_bytes(s)
print(b)  # b'\xe4\xbd\xa0\xe5\xa5\xbd'

b = b'Hello'
s = bytes_to_str(b)
print(s)  # Hello

b = b'\xe4\xbd\xa0\xe5\xa5\xbd'
s = bytes_to_str(b)
print(s)  # 你好
Python

上述代码中,str_to_bytes()函数可以将字符串转换为字节,bytes_to_str()函数可以将字节转换为字符串。运行结果如下:

b'Hello'
b'\xe4\xbd\xa0\xe5\xa5\xbd'
Hello
你好

总结

本文介绍了Python3中字符串和字节之间的转换方法。通过encode()方法,可以将字符串转换为字节;通过decode()方法,可以将字节转换为字符串。这些方法在网络传输、文件读写等场景中经常使用。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册