zoukankan      html  css  js  c++  java
  • 02-bytes和str

    bytes

    bytes对象只负责以二进制字节序列的形式记录所需记录的对象,至于该对象到底表示什么(比如到底是什么字符)则由相应的编码格式解码所决定


    >>> type(b'xxxxx')
    <class 'bytes'>
    >>> type('xxxxx')
    <class 'str'>

    str 使用encode方法转化为 bytes

    bytes通过decode转化为str


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

    In [10]: type(str1)
    Out[10]: str

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

    In [12]: b
    Out[12]: b'xe4xbaxbaxe7x94x9fxe8x8bxa6xe7x9fxad
    xefxbcx8cxe6x88x91xe7x94xa8Python!'

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

    bytes转换成str:


    In [22]: b
    Out[22]: b'xe4xbaxbaxe7x94x9fxe8x8bxa6xe7x9fxad
    xefxbcx8cxe6x88x91xe7x94xa8Python!'

    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'xe4xbaxbaxe7x94x9fxe8x8bxa6xe7x9fxadxefxbcx8cxe6x88x91xe7x94xa8Python!')

    In [30]: b1.decode()
    Out[30]: '人生苦短,我用Python!'

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

    In [32]: b1
    Out[32]: bytearray(b'xe7x94x9fxe5x91xbdxe8x8bxa6xe7x9fxadxefxbcx8cxe6x88x91xe7x94xa8Python!')

    In [33]: b1.decode()
    Out[33]: '生命苦短,我用Python!'

  • 相关阅读:
    OJ:自己实现一个简单的 priority_queue
    OJ:访问 const 成员函数问题
    OJ:重载 << 运算符
    Qt 编程中 namespace Ui { class Widget; } 解析
    QT 实现图片旋转的两种方法
    QTimer 的使用
    QT 完美实现圆形按钮
    QT 设置有效绘图区域
    基于 LWIP 建立 TCP Server 与主机通信实验
    大整数相乘 分治法 和 循环暴力法
  • 原文地址:https://www.cnblogs.com/Zachariah9426/p/10706372.html
Copyright © 2011-2022 走看看