• bytes & bytearray in python3


    bytes

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

    • Python 2中

    >>> type(b'xxxxx')
    <type 'str'>
    >>> type('xxxxx')
    <type 'str'>
    
    • Python 3中

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

    区别

    • 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'xe4xbaxbaxe7x94x9fxe8x8bxa6xe7x9fxadxefxbcx8cxe6x88x91xe7x94xa8Python!'
    
    In [13]: type(str1.encode())
    Out[13]: bytes
    

    bytes转换成str:

    In [22]: b
    Out[22]: b'xe4xbaxbaxe7x94x9fxe8x8bxa6xe7x9fxadxefxbcx8cxe6x88x91xe7x94xa8Python!'
    
    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!'
  • 相关阅读:
    BZOJ 2142: 礼物
    八校联考前3场记录
    BZOJ1115:[POI2009]石子游戏Kam (博弈论)
    IE10、IE11解决不能播放Flash的问题!
    ClientAbortException 异常解决办法
    WeX5学习笔记-建立项目且从SVN获取版本
    WeX5学习笔记-创建本地APP相关问题
    android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )屏幕适配
    ERROR 1130 (HY000):Host'localhost'解决方法
    一台机器运行多个JBoss 4.2.3多实例,或多个同一版
  • 原文地址:https://www.cnblogs.com/mapone/p/12023158.html
Copyright © 2020-2023  润新知