人工智能(python)开发 —— 字节串(bytes)、字节数组 (bytearray)和编码格式



一、字节串(bytes)

1、字节串 bytes (也叫字节序列)

作用
        存储以字节为单位的数据
说明
        字节串是不可变的字节序列
        字节是0~255的整数

2、创建空字节串的字面值

        b = b''     b 绑定空字节串        
        b = b""     b 绑定空字节串
        b = b'''''' b 绑定空字节串
        b = b"""""" b 绑定空字节串

3、创建非空字节串的字面值

        B  =  b'hello'
        B  =  b"Hello"
        B  =  b '''ABCD'''
        B  =  b """ NASJDK"""
        B  =  b'abc\n123'
        B  =  b'\x41\x42'

4、字节串的构造函数bytes

        bytes()                                              生成一个字的字节串,等同于b''
        bytes(整型可迭代对象)                      用可迭代对象初始化一个字节串
        bytes(整数n)                                     生成n个值为0的字节串
        bytes(字符串, encoding='utf-8')      用字符串的转换编码生成一个字节串

5、示例

b = bytes()
b = bytes(range(0, 255))
b = bytes(10)
b = bytes('你好', 'utf-8')

6、字符串的运算

        +      +=      *      *=
        <      <=      >      >=      ==      !=
        in / not in
        索引和切片

7、用于bytes序列的函数

        len、max、min、sum、any、all 都可用于字节串

8、用于bytes序列的方法

        详见:help(bytes)

9、bytes 与 str 的区别

        bytes     存储字节(0~255)
        str         存储字符(Unicode值)

str 与 bytes相互转换:
                                编码(encode)
        str     ---------------------------------------->     bytes
                        b = s.encode(encoding='utf-8')

                                解码(decode)
        bytes ----------------------------------------> str
                        s = b.decode(encoding='utf-8')

注:所有的str都能转换为bytes,但是不是所有的bytes都能转换为str(比如:音频、视频文件)

二、字节数组 (bytearray)

1、字节数组 bytearray

        字节数组是可变的字节序列

2、创建函数bytearray

        bytearray()                                            创建字节数组
        bytearray(可迭代对象)                           同bytes(可迭代对象):用可迭代对象初始化一个字节串
        bytearray(整数n)                                   生成n个值为0的字节串
        bytearray(字符串, encoding='utf-8')    用字符串的转换编码生成一个字节串

3、bytes和bytearray区别

        字节串是不可变的字节序列

        字节数组是可变的字节序列

4、运算操作

        +      +=      *      *=
        <      <=      >      >=      ==      !=
        in / not in
        索引和切片
 (字节数组支持索引和切片赋值,规则同列表的索引和切片赋值规则)

5、示例

ba = bytearray(b'abcdefg')
ba[0] = 0x41                    # ba = bytearray(b‘Abcdefg’)
ba[1::2] = bytearray(b'BDF')    # ba = bytearray(b'ABcDeFg')

6、字节数组(bytearray)的方法

BA代表bytearray
        BA.clear()                          清空字节数组
        BA.append(n)                   追加一个字节(n为0~255的整数)
        BA.remove(value)            删除第一个出现的字节,如过没有出现,,则触发ValueError错误
        BA.reverse()                     字节的顺序反转
        BA.decode(encoding=‘utf-8’)     将bytearray转换为字符串
        BA.find(sub [, start[, end]])               查找sub字节数数组

详见: help(bytearray)

三、编码格式

1、编码

        国标系列:(常用于Windows)
                GB18030(2字节或4字节编码,共27533个)
                    GBK(2字节编码,共21003个)
                        GB2312(2字节编码,共6763个汉字)      
        国际标准:(常用语Linux /Mac OS X / IOS /Android)
                UNICODE16/UNICODE32   <<<---->>>      UTF-8

                注:UTF-8(8-bit Unicode  Transformation  Format)

2、说明

        a、python3的字符串内部都是用UNICODE来存储字符的
        b、每个中文文字在utf-8标准格式中占3个字符
        c、在互联网中文件是以utf-8格式进行传递,所有在传输文件(字符串)前后需要进行编码(encode)和解码(decode)

3、python 编码(encode) 字符串

         'gb2312'
         'gbk'
         'gb18030'
         'utf-8'
         'ascii'

4、编码注释

  在python 源文件第一行或第二行写入如下内容是告诉解释执行器此文件的编码类型是什么
  如

# -*- coding: gbk -*-
# 设置源文件编码格式为gbk

  或

# -*- coding: utf-8 -*-
# 设置源文件编码格式为utf-8

四、附录

        人工智能(python)—— 目录汇总



猜你喜欢

转载自blog.csdn.net/qq_27297393/article/details/80806868