http://linchunai1212.blog.163.com/blog/static/35112143201110213411104/
在Python中,bytes和string是不同的东西。由一系列不可改变的Unicode字符组成的叫string。而一系列不可改变的介于0-255之间的数字被称为bytes对象。
来看示例:
>>> by = b'abcd\x65' #使用b''的格式定义bytes对象。每一个byte可以是一个ASCII字符或者十六进制数从\x00到\xff。 >>> by b'abcde' >>> type(by) >>> len(by) #和list和string一样,可以使用内置的len()函数计算bytes对象的长度。 5 >>> by += b'\xff' #和list和string一样,可以使用+操作符连接两个bytes对象。 >>> by b'abcde\xff' >>> len(by) 6 >>> by[0] #可以使用索引来访问bytes对象中的某一个byte 97 >>> by[4] 101 >>> by[0] = 111 #bytes对象是不可改变的,不能对其赋值。 Traceback (most recent call last): File "", line 1, in TypeError: 'bytes' object does not support item assignment
虽然我们不能对bytes对象直接赋值,但是我们可以将bytes转换为一个bytearray对象,bytearray对象是可以被修改的。
>>> barr = bytearray(by) >>> barr bytearray(b'abcde\xff') >>> barr[0] = 120 >>> barr bytearray(b'xbcde\xff')
bytes对象和string是不可以混在一起的。
>>> by
b’abcde\xff’
>>> s = “abcdefg”
>>> by + s
Traceback (most recent call last):
File ““, line 1, in
TypeError: can’t concat bytes to str
但是,bytes和string并不是毫无关系的,bytes对象有一个decode()方法,向该方法传递一个字符编码参数,该方法会返回使用该种编码解码后的字符串。同样的,string有一个encode()方法,完成反向的工作。
>>> string = "深入 Python" >>> len(string) 9 >>> by = string.encode('utf-8') #将字符串编码为UTF8 >>> len(by) 13 >>> by b'\xe6\xb7\xb1\xe5\x85\xa5 Python' >>> by = string.encode('gb18030') #将字符串编码为GB18030 >>> len(by) 11 >>> by b'\xc9\xee\xc8\xeb Python' >>> by.decode('gb18030') #将bytes对象解码 '深入 Python'
分享到:
相关推荐
在Python 3中,`str` 和 `bytes` 是两种完全不同的数据类型,它们分别用于表示文本和二进制数据。这种明确的区分是Python 3相对于Python 2的一个重大改变,它使得处理文本和二进制数据时更加规范和安全。在Python 3...
一.bytes和string区别 ...bytes经过解码decode,转化成string,让我们看,但是注意反编码的编码规则是有范围,\xc8就不是utf8识别的范围; if __name__ == __main__: # 字节对象b b = bshuopython.com
2. 通过字符串和指定编码进行转换,如`bytes("python", 'ascii')`,其中'ascii'是编码格式。 在处理字符串和字节之间的转换时,通常涉及编码和解码过程: - **编码**:将str转换为bytes,这个过程是将Unicode字符...
### 详解Python中的String类型、Bytes类型与Bytearray类型 #### 一、Python 3 对文本和二进制数据的区分 在 Python 3 中,为了更好地处理文本和二进制数据,引入了明确的区分机制。文本数据采用 Unicode 编码,...
Python 编码是 Python 编程中的基础概念,关乎到程序如何正确地处理文本数据。在 Python 中,字符串是文本的表示形式,而编码则决定了这些字符串如何在内存中存储和如何与磁盘上的文件进行交互。本资料集合了网上...
在Python3.x版本中,将字节串(byte)类型转换成字符串(string)类型是一个常见的操作,这在处理网络请求、文件读写等场景中十分必要。字节串是8位字节的序列,通常用于二进制数据的表示,而字符串则是人类可读的...
例如,我们可以用`codecs.encode(string, encoding)`将字符串按照指定的编码格式转为字节,再用`codecs.decode(bytes, encoding)`将字节解码回字符串。 在这个基于Python的中文编码转换工具中,`code.py`可能是主要...
在Python编程语言中,处理不同编码格式是常见的需求,特别是在处理文本数据时。"python实现编码格式改变"这个主题涉及到如何将文件或字符串从一种编码转换为另一种编码,例如从UTF-8转换到GBK,或者反之。在这个过程...
Python支持多种格式化方式,包括传统的`%`操作符,`str.format()`方法,以及现代的f-string。例如,`"My name is %s and I am %d years old." % ('Alice', 30)`,`"{name} is {age} years old".format(name='Alice'...
4. `bytes(string, encoding[, errors])`:将字符串通过指定的编码方式(如UTF-8)转换为`bytes`。 `bytes`对象支持许多与字符串相似的操作,比如`replace()`、`find()`等,但所有操作都不会改变原对象。此外,`...
首先,我们可以利用Python内置的`zlib`和`base64`库来实现简单的压缩和编码。`zlib`库提供了gzip和deflate算法的接口,可以对数据进行压缩,而`base64`库则用于将二进制数据编码为ASCII字符串,便于在网络传输中使用...
在计算机科学领域,字符编码是数据处理和存储中不可或缺的一部分,UTF-8和字符串(string)之间的转换是常见的操作。UTF-8是一种广泛使用的Unicode字符编码,它可以表示Unicode字符集中的所有字符,而字符串则通常指的...
print(byte_string + b' Bytes') # 输出:b'Python Bytes' ``` 在Python中,字符串、字节和字节数组之间的转换也需要特别注意。`str.encode()`方法用于将字符串编码为字节,`str.decode()`用于将字节解码回字符串。...
总的来说,Python的`base64`模块为处理Base64编码提供了全面的支持,无论是在网络通信、数据存储还是其他需要转换二进制数据为文本格式的场景,都能发挥重要作用。在实际项目中,理解并熟练使用这些函数能够帮助我们...
def string_encoding(b: bytes): """ 获取字符编码类型 :param b: 字节数据 :return: 编码类型 """ for code in CODES: try: b.decode(encoding=code) if 'UTF-8' == code and b.startswith(UTF_8_BOM): ...
6. 二进制序列类型:bytes(字节串)、bytearray(字节数组)、memoryview(内存视图)是Python中的二进制序列类型,用于处理二进制数据。 7. 映射类型:dict(字典)是Python中的唯一内置映射类型,它存储键值对,...