bytes

bytes是Python 3中特有的,Python 2 里不区分bytes和str。

Python 2中

>>> type(b'xxxxx')

>>> type('xxxxx')

Python 3中

>>> type(b'xxxxx')

>>> type('xxxxx')

区别

bytes是byte的序列,而str是unicode的序列。

str 使用encode方法转化为 bytes

bytes通过decode转化为str

str转换成bytes:

In [9]: str1='人生苦短,我用Python!'

In [10]: type(str1)

Out[10]: str

In [11]: b=str1.encode()

In [12]: b

Out[12]: b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!'

In [13]: type(str1.encode())

Out[13]: bytes

bytes转换成str:

In [22]: b

Out[22]: b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!'

In [23]: type(b)

Out[23]: bytes

In [24]: b.decode()

Out[24]: '人生苦短,我用Python!'

In [25]: type(b.decode())

Out[25]: str

在Python 2中由于不区分str和bytes所以可以直接通过encode()和decode()方法进行编码解码。而在Python 3中把两者给分开了这个在使用中需要注意。实际应用中在互联网上是通过二进制进行传输,所以就需要将str转换成bytes进行传输,而在接收中通过decode()解码成我们需要的编码进行处理数据这样不管对方是什么编码而本地是我们使用的编码这样就不会乱码。

bytearray

bytearray和bytes不一样的地方在于,bytearray是可变的。

In [26]: str1

Out[26]: '人生苦短,我用Python!'

In [28]: b1=bytearray(str1.encode())

In [29]: b1

Out[29]: bytearray(b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!')

In [30]: b1.decode()

Out[30]: '人生苦短,我用Python!'

In [31]: b1[:6]=bytearray('生命'.encode())

In [32]: b1

Out[32]: bytearray(b'\xe7\x94\x9f\xe5\x91\xbd\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python!')

In [33]: b1.decode()

Out[33]: '生命苦短,我用Python!'

补充

Python2

>>> type('foo')

>>> type(u'foo')

>>> type(b'foo')

>>> bytes is str

True

>>> b'foo'[0]

'f'

Python3

>>> type('foo')

>>> type(u'foo')

>>> type(b'foo')

>>> bytes is str

False

>>> b'foo'[0]

102

python bytes和bytearray_Python bytes和bytearray相关推荐

  1. python bytes和bytearray_python bytes和bytearray、编码和解码

    str.bytes和bytearray简介 str是字符数据,bytes和bytearray是字节数据.它们都是序列,可以进行迭代遍历.str和bytes是不可变序列,bytearray是可变序列,可 ...

  2. python基础入门:bytes 和 string转换的方法

    Python 3 最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分. 文本总是 Unicode,由 str 类型表示,二进制数据则由 bytes 类型表示. Python 3 不会以任意隐 ...

  3. python bytes 改值_python3 bytes 和 string转换

    前言 Python 3 最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分. 文本总是 Unicode,由 str 类型表示,二进制数据则由 bytes 类型表示. Python 3 不会以 ...

  4. python中如何将bytes格式转换为numpy ndarray

    python中如何将bytes格式转换为numpy ndarray python中如何将bytes格式转换为numpy ndarray

  5. Python里 int 和 bytes互转的方法

    Python里 int 和 bytes互转的方法 在Python3之前,一般是使用下面的方法: >>> import struct >>> struct.pack( ...

  6. python之str与bytes互转

    # -*- coding: utf-8 -*- bytes_object = b"example" # str object str_object = "example& ...

  7. python bytes 改值_Python3 bytes() 函数详解 将参数转为不可变的字节数组

    Python3 bytes() 函数详解 将参数转为不可变的字节数组 bytes()函数的主要用途是将参数转换为一个新的字节数组,它是一个不可变的整数序列,它的取值范围是0 <= x < ...

  8. Python系列(五):bytes和str的区别与联系

    Bytes和Str的区别 在Python3中,字符序列有两种类型:bytes和str.bytes类型是无符号的8位值(通常以ASCII码显式),而str类型是Unicode代码点(code point ...

  9. Python字节转换(Bytes conversion)

    发现一个好用的Python函数,用于将字节Bytes转为易于人阅读的量级格式,包括KB/MB/GB/TB等: def bytes2human(n):# http://code.activestate. ...

最新文章

  1. 图解:什么是Raft算法?
  2. QT 实用代码片段 (持续更新)
  3. java.lang.IllegalStateException: 启动子级时出错
  4. [转载]C#中注册Dll的问题
  5. Effective C# 原则34:创建大容量的Web API(译)
  6. mysql convert报错_部署mysql版本项目问题记录
  7. 测试工作——XPath
  8. 程序员抱怨:父母没文化没见识,当初努力学习远离看来是正确的
  9. mysql中递增列_如何使用JDBC在MySQL中创建带有自动递增列的表?
  10. Koding VM 配置nginx 小记
  11. [英语阅读笔记]Creating Master Detail Pages using GridView
  12. 从shell(终端)中退出python
  13. 【论文泛读05】基于Conv-LSTM的短期交通流预测
  14. Asp 解析 XML并分页显示
  15. 泰勒成立的基本原理(转载)
  16. php定义一个矩形类rectangle,Python3面向对象—点和矩形类
  17. 思科网院 Routing and Switching Essentials ( 版本 6.00) - RSE 6.0 第 1 章考试答案
  18. python加密excel
  19. 如何修改电脑密码(在不知道密码的前提下)
  20. WinPcap编程之HTTP协议还原

热门文章

  1. 17.Docker 容器时间与宿主机同步
  2. 中秋佳节,祝您平安喜乐
  3. 数据标注有哪些类型?
  4. php ora-12154,Oracle连接出现ora-12154
  5. 静态路由及默认路由——基本配置
  6. azure kinect三维点云_Azure Kinect DK基础问答(上篇)
  7. 东师《水彩画技法》离线作业网考
  8. 常见的23种设计模式总结
  9. hashMap的容量(capacity)为什么必须是是2的n次方
  10. Linux _ 文件系统的类型和结构