zoukankan      html  css  js  c++  java
  • [PY3]——内置数据结构(5)——字符串编码

    py2和py3中关于字符串的最大区别?

    python2中只有 unicode类型

    而python3中有 string bytes两种类型 

    关于string和bytes的区分?

    1.str是文本序列、bytes是字节序列 (文本=字符)

    2.字节是没有编码的、文本是有编码的(单字节编码/双字节编码):utf-8 gbk,GB18030等

    3.什么是编码?
    编码可以说是一种“字节的组织方式”
    字符是由字节组成的,而字符的编码规定了它是如何来组织这些字节的,即如何使用字节来表示这些字符

    encode( )与decode( )

    # encode()用于将str ——> bytes
    
    In [1]: ''.encode()
    Out[1]: b'xe5x8dxa2'
    
    In [2]: bin(0xe5)
    Out[2]: '0b11100101'
    In [3]: bin(0x8d)
    Out[3]: '0b10001101'
    In [4]: bin(0xa2)
    Out[4]: '0b10100010'   //所以''在计算机中的表示就是这些二进制
    
    
    # python3字符串默认使用utf-8编码,encode('')可指定不同编码方式
    In [5]: ''.encode('GBK')
    Out[5]: b'xc2xac'
    
    # decode()用于将bytes ——> str
    In [6]: b'xe5x8dxa2'.decode()
    Out[6]: ''


    bytes类型

    # 通过b前缀(b' ')定义bytes
    
    # 除了encode外,str的操作都有对应bytes的版本, 但是传入参数也必须是bytes
    In [1]: b'abc'.find('b')
    TypeError: a bytes-like object is required, not 'str'
    
    In [2]: b'abc'.find(b'b')
    Out[2]: 1
    
    # 要注意bytes的操作是按照字节来的
    In [3]: len(''.encode())
    In [3]: 3
    
    In [4]: ''.encode().find(b'xe5')
    Out[4]: 0
    
    # bytes类型自身的两个操作:decode()、hex()
    In [6]: b.decode()
    Out[6]: 'abc'
    
    In [7]: b.hex()   //转化为16进制
    Out[7]: '616263'


    bytearray类型

    # bytearray是bytes的可变版本
    # 使用场景:例如图片处理
    
    # 相对于bytes来说,bytearray多了insert、append、extend、pop、remove、clear、reverse(这些原地修改的方法)
    # 并且可以索引操作
    # 但insert、append、remove、count的参数必须是int,且范围是0-256
    
    In [11]: b=b'abc';type(b)
    Out[11]: bytes
    
    In [13]: ba=bytearray(b);type(ba)
    Out[13]: bytearray
    
    
    In [15]: b[1]=b'B'
    TypeError: 'bytes' object does not support item assignment
    
    In [16]: ba[1]=int(b'B'.hex(),16); print(ba)
    Out[16]:bytearray(b'aBc')





  • 相关阅读:
    史上最全的浏览器 CSS & JS Hack 手册
    JavaScript1.6数组新特性和JQuery的几个工具方法
    用jquery循环map
    javascript强大的日期函数
    用 javascript 判断 IE 版本号
    常见排序算法基于JS的实现
    JavaScript中callee,caller,argument的理解
    apply()方法和call()方法
    虽然我们可能不想对元素应用3D变换,可我们一样可以开启3D引擎
    在移动端上加上代码,让字体变得平滑
  • 原文地址:https://www.cnblogs.com/snsdzjlz320/p/6572565.html
Copyright © 2011-2022 走看看