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
    艾克你好
    
    
  • 相关阅读:
    HDU 1102 Constructing Roads
    HDU 1285 确定比赛名次。
    最小生成树 HDU 各种畅通工程的题,prim和kru的模板题
    HDU Jungle Roads 1301 最小生成树、
    并查集小结(转)
    HDU hdu 2094 产生冠军 拓扑排序 判定环
    模运算(转)
    拓扑排序(主要是确定环和加法) HDU 2647 Reward
    HDU 1372 Knight Moves 简单BFS
    用计算机模型浅析人与人之间沟通方式 (一)如何谈话
  • 原文地址:https://www.cnblogs.com/aizhinong/p/11407256.html
Copyright © 2011-2022 走看看