zoukankan      html  css  js  c++  java
  • 内置函数:bytes、bytearray、memoryview

    bytes:字节组成的有序不可变序列
    bytearray:在phthon3当中新增的bytearray为字节组成的可变序列,修改字节不会生成新的序列
    字符串以字符为单位,转换成bytes类型以字节为单位,两者并无区别,本质都是编译成计算机可以读懂的01010101字节码
    两者参数一样:
    • 如果 source 为整数,则返回一个长度为 source 的初始化数组;
    • 如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列;
    • 如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数;
    • 如果 source 为与 buffer 接口一致的对象,则此对象也可以被用于初始化 bytearray。
    • 如果没有输入任何参数,默认就是初始化数组为0个元素。
    创建:
    name = bytes('aike',encoding='utf-8') #通过关键字创建
    name1 = b'aike' #直接指定字符串为bytes类型
    print(name)
    print(name1)
    print(b'')#参数为空,初始化数组为0个元素。
    print(bytes([1,2,3,485]))#报错 如果传入的参数为可迭代类型,必须为0-256之间的整数
    
    
    a = [1,2,3,4,5,25]
    print(bytearray(a))
    
    a = [1,2,3,4,5,257]
    print(bytearray(a))#报错 如果传入的参数为可迭代类型,必须为0-256之间的整数
    
    print(bytearray(21))
    print(bytearray('aike',encoding='utf-8'))#转换成utf-8编码格式的bytearray类型
    print(bytearray('艾克',encoding='utf-8'))
    print(bytearray())#参数为空,初始化数组为0个元素。

    decode:
    将bytes格式的字符串解码成字符串格式,是什么编码的bytes类型,就要用什么编码进行解码,否则会报错或者乱码,默认为utf-8。
    s = bytes('艾克',encoding='gbk')
    b = s.decode('gbk')
    print(s)
    print(b)

    encode:
    将字符串转换成指定编码的bytes类型,是什么编码的bytes类型,就要用什么编码进行解码,否则会报错或者乱码,默认为utf-8。
    s1 = '艾克'
    s2 = s1.encode('gbk')
    s3 = s2.decode('gbk')
    print(s2,s3)

    memoryview:
    如果要用memoryview去引用一个object, 那么这个object必须支持buffer protocol,python中原生(built-in)支持buffer protocol的obj有bytes和bytearray。
    所以使用它需要先把参数转换成bytes类型的字节码形式,一般的序列进行切片是直接切出来存在新的内存,而memoryview切出来的是缓存,不占用新的内存。
    但只有支持buffer protocol(缓存协议)的数据类型才支持使用,所以表现形式是字节码,需要表现成字符串形式需要进行解码,但解码后同样新占内存
    s = bytes('艾克你好',encoding='utf-8')
    a = memoryview(s)
    print(len(a))#字节长度
    print(a[0])
    print(a[1])
    print(a[2])
    print(bytes(a[0:]).decode('utf-8'))#切片后解码
    
    #打印:
    12
    232
    137
    190
    艾克你好
    
    
  • 相关阅读:
    《Node.js入门》CentOS 6.5下Node.js Web开发环境搭建笔记
    HDU 4836 The Query on the Tree lca || 欧拉序列 || 动态树
    Android网络框架-Volley实践 使用Volley打造自己定义ListView
    Unity3D的ugui之按钮事件
    【Stage3D学习笔记续】真正的3D世界(六):空间大战
    【AwayPhysics学习笔记】:Away3D物理引擎的简介与使用
    【Away3D代码解读】(五):动画模块及骨骼动画
    【Away3D代码解读】(四):主要模块简介
    【Stage3D学习笔记续】真正的3D世界(五):粒子特效
    【Stage3D学习笔记续】真正的3D世界(四):空间大战雏形
  • 原文地址:https://www.cnblogs.com/aizhinong/p/11407256.html
Copyright © 2011-2022 走看看