zoukankan      html  css  js  c++  java
  • python string类型 bytes类型 bytearray类型

    一、python3对文本和二进制数据做了区分。文本是Unicode编码,str类型,用于显示。二进制类型是bytes类型,用于存储和传输。bytes是byte的序列,而str是unicode的序列。

    str类型:

    1 >>> s = u'你好'
    2 >>> s
    3 '你好'
    4 >>> type(s)
    5 <class 'str'>

    bytes类型:

    1 >>> b = b'abc'
    2 >>> b
    3 b'abc'
    4 >>> type(b)
    5 <class 'bytes'>

    二、str和bytes之间的转换关系:str-->encode()-->bytes-->decode()-->str

    转换方式一:encode(),decode()

     1 >>> a = u'你好'
     2 >>> b = a.encode('utf-8')
     3 >>> b
     4 b'xe4xbdxa0xe5xa5xbd'
     5 >>> type(b)
     6 <class 'bytes'>
     7 >>> new_a = b.decode('utf-8')
     8 >>> new_a
     9 '你好'
    10 >>> type(new_a)
    11 <class 'str'>

    转换方式二:bytes(),str()

     1 >>> a = u'你好'
     2 >>> b= bytes(a, encoding='utf-8')
     3 >>> b 
     4 b'xe4xbdxa0xe5xa5xbd'
     5 >>> type(b)
     6 <class 'bytes'>
     7 >>> new_a = str(b, encoding='utf-8')
     8 >>> new_a
     9 '你好'
    10 >>> type(new_a)
    11 <class 'str'>

    三、bytearray类型

    bytearray类是range 0 < = x < 256的一个可变序列。

    可选的源参数可以用几种不同的方式来初始化数组:

    • 如果它是一个字符串,那么您还必须给出编码(以及可选的错误)参数;bytearray()然后使用str.encode()将字符串转换为字节。
    • 如果它是一个整数,那么数组将具有这个大小,并将用null字节初始化。
    • 如果它是符合缓冲区接口的对象,则将使用对象的只读缓冲区来初始化字节数组。
    • 如果它是可迭代的,那么它必须是range 0 < = x < 256的整数的迭代,它被用作数组的初始内容
    • 如果没有参数,则创建一个大小为0的数组。

    当源参数是一个字符串时:

    1 >>> b = bytearray(u'你好', encoding='utf-8')
    2 >>> b
    3 bytearray(b'xe4xbdxa0xe5xa5xbd')
    4 >>> type(b)
    5 <class 'bytearray'>

    当源参数是一个整数时:

    1 >>> b = bytearray(5)
    2 >>> b
    3 bytearray(b'x00x00x00x00x00')
    4 >>> type(b)
    5 <class 'bytearray'>

    当源参数是一个可迭代对象,那么这个迭代对象的元素都必须符合0 <= x < 256

    1 >>> b = bytearray([1, 2, 3, 4, 255])
    2 >>> b
    3 bytearray(b'x01x02x03x04xff')
    4 >>> type(b)
    5 <class 'bytearray'

    四、bytes和bytearray区别

    bytes是不可变的,同str。bytearray是可变的,同list。

     1 >>> b = bytearray()
     2 >>> b
     3 bytearray(b'')
     4 >>> b.append(10)
     5 >>> b
     6 bytearray(b'
    ')
     7 >>> b.append(100)
     8 >>> b
     9 bytearray(b'
    d')
    10 >>> b.remove(100)
    11 >>> b
    12 bytearray(b'
    ')
    13 >>> b.insert(0, 150)
    14 >>> b
    15 bytearray(b'x96
    ')
    16 >>> b.extend([1, 3, 5])
    17 >>> b
    18 bytearray(b'x96
    x01x03x05')
    19 >>> b.pop(2)
    20 1
    21 >>> b
    22 bytearray(b'x96
    x03x05')
    23 >>> b.reverse()
    24 >>> b
    25 bytearray(b'x05x03
    x96')
    26 >>> b.clear()
    27 >>> b
    28 bytearray(b'')

    五、bytes和 bytearray转换

    1 >>> b = b'abcdef'
    2 >>> bay = bytearray(b)
    3 >>> bay
    4 bytearray(b'abcdef')
    5 >>> b = bytes(bay)
    6 >>> b
    7 b'abcdef'

    六、bytearray和str转换

    1 >>> a = 'abcdef'
    2 >>> b = bytearray(a, encoding='utf-8')
    3 >>> b
    4 bytearray(b'abcdef')
    5 >>> a = b.decode(encoding='utf-8')
    6 >>> a
    7 'abcdef'
  • 相关阅读:
    【Java-JVM】定量分析解决OutOfMemoryError: PermGen space, 来看科学量化分析
    Oracle11g 主机身份证明问题
    html标签的嵌套规则
    提高程序员职场价值的10大技巧
    IT人应当知道的10个行业小内幕
    趣文:如果编程语言是车
    去除inline-block元素间间距的N种方法
    《大型网站SEO优化实践》学习分享
    如何通过预加载器提升网页加载速度
    网页爬虫及其用到的算法和数据结构
  • 原文地址:https://www.cnblogs.com/gundan/p/8047315.html
Copyright © 2011-2022 走看看