Skip to content
SRE运维进阶之路SRE运维进阶之路
github icon
    • 1 Python 简介

      • 1.1 初识Python
        • 1.2 Python 代码规范
          • 1.3 Python 虚拟环境
            • 1.4 使用 vscode 打造 python 开发环境
              • 1.5 pypi 配置国内镜像
              • 2 Python 基础

                • 2.1 Python基础语法
                  • 2.2 程序控制
                    • 2.3 Python数据类型

                      • 2.3.1 数值型
                        • 2.3.2 字符串 str
                          • 2.3.3 字节序列
                            • 编码与解码
                              • ASCII
                                • bytes 初始化
                                  • bytearrary 初始化
                                  • 2.3.4 列表 list & 元组 tuple
                                    • 2.3.5 集合 set & 字典 dict
                                  • 3 高级特性

                                    • 3.1 线性结构特征 可迭代 & 切片
                                      • 3.2 列表、集合、字典解析式
                                        • 3.3 生成器
                                          • 3.4 迭代器
                                          • 4 函数

                                            • 4.1 函数的定义 & 调用 & 返回值
                                              • 4.2 函数参数
                                                • 4.3 作用域
                                                  • 4.4 递归函数
                                                  • 5 函数式编程

                                                    • 5.1 高阶函数
                                                      • 5.2 返回函数
                                                        • 5.3 匿名函数
                                                          • 5.4 装饰器
                                                            • 5.5 偏函数
                                                            • 6 模块

                                                              • 6.1 Python 模块常用的几种安装方式
                                                                • 6.2 Python 的 setup.py 详解
                                                                • 7 IO编程

                                                                  • 7.1 操作文件和目录
                                                                    • 7.2 序列化和反序列化
                                                                    • 8 异常、调试和测试

                                                                      • 8.1 异常处理
                                                                      • 9 面向对象编程

                                                                        • 9.1 类、实例和封装
                                                                          • 9.2 访问控制和属性装饰器
                                                                            • 9.3 继承、多态和Mixin
                                                                            • 10 进程和线程

                                                                              • 10.1 多进程
                                                                                • 10.2 多线程
                                                                                  • 10.2 线程同步
                                                                                  • 11 网络编程

                                                                                    • 11.1 SocketServer
                                                                                      • 11.2 TCP 编程
                                                                                      • 11 魔术方法
                                                                                        • 17 IO 模型
                                                                                          • python 实际工作中的实例
                                                                                          • 前端学习笔记

                                                                                            2.3.3 字节序列

                                                                                            author iconClaycalendar icon2021年6月8日category icon
                                                                                            • Python
                                                                                            timer icon大约 5 分钟

                                                                                            此页内容
                                                                                            • 编码与解码
                                                                                            • ASCII
                                                                                            • bytes 初始化
                                                                                            • bytearrary 初始化

                                                                                            # 2.3.3 字节序列

                                                                                            Python3 引入两个新的类型 bytes、bytearray。

                                                                                            bytes 不可变字节序列;bytearray 是可变字节数组。

                                                                                            # 编码与解码

                                                                                            • 编码:str => bytes,将字符串这个字符序列使用指定字符集encode编码为一个个字节组成的序列bytes
                                                                                            • 解码:bytes 或 bytearray => str,将一个个字节按照某种指定的字符集解码为一个个字符串组成的字符串
                                                                                            print("abc".encode()) # 缺省为utf-8编码
                                                                                            print("啊".encode())
                                                                                            print("啊".encode('utf-8'))
                                                                                            print("啊".encode('gbk'))
                                                                                            print(b'abc'.decode('utf8'))
                                                                                            print(b'\xb0\xa1'.decode('gbk'))
                                                                                            print(b'\xe5\x95\x8a'.decode())
                                                                                            
                                                                                            1
                                                                                            2
                                                                                            3
                                                                                            4
                                                                                            5
                                                                                            6
                                                                                            7

                                                                                            # ASCII

                                                                                            ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁 字母的一套单字节编码系统

                                                                                            ASCII控制字符

                                                                                            二进制十进制十六进制缩写可以显示的表示法名称/意义
                                                                                            0000 0000000NUL␀空字符(Null)
                                                                                            0000 0001101SOH␁标题开始
                                                                                            0000 0010202STX␂本文开始
                                                                                            0000 0011303ETX␃本文结束
                                                                                            0000 0100404EOT␄传输结束
                                                                                            0000 0101505ENQ␅请求
                                                                                            0000 0110606ACK␆确认回应
                                                                                            0000 0111707BEL␇响铃
                                                                                            0000 1000808BS␈退格
                                                                                            0000 1001909HT␉水平定位符号
                                                                                            0000 1010100ALF␊换行键
                                                                                            0000 1011110BVT␋垂直定位符号
                                                                                            0000 1100120CFF␌换页键
                                                                                            0000 1101130DCR␍归位键
                                                                                            0000 1110140ESO␎取消变换(Shift out)
                                                                                            0000 1111150FSI␏启用变换(Shift in)
                                                                                            0001 00001610DLE␐跳出数据通讯
                                                                                            0001 00011711DC1␑设备控制一(XON 启用软件速度控制)
                                                                                            0001 00101812DC2␒设备控制二
                                                                                            0001 00111913DC3␓设备控制三(XOFF 停用软件速度控制)
                                                                                            0001 01002014DC4␔设备控制四
                                                                                            0001 01012115NAK␕确认失败回应
                                                                                            0001 01102216SYN␖同步用暂停
                                                                                            0001 01112317ETB␗区块传输结束
                                                                                            0001 10002418CAN␘取消
                                                                                            0001 10012519EM␙连接介质中断
                                                                                            0001 1010261ASUB␚替换
                                                                                            0001 1011271BESC␛跳出
                                                                                            0001 1100281CFS␜文件分割符
                                                                                            0001 1101291DGS␝组群分隔符
                                                                                            0001 1110301ERS␞记录分隔符
                                                                                            0001 1111311FUS␟单元分隔符
                                                                                            0111 11111277FDEL␡删除

                                                                                            ASCII可显示字符

                                                                                            二进制十进制十六进制图形
                                                                                            0010 00003220(空格)(␠)
                                                                                            0010 00013321!
                                                                                            0010 00103422"
                                                                                            0010 00113523#
                                                                                            0010 01003624$
                                                                                            0010 01013725%
                                                                                            0010 01103826&
                                                                                            0010 01113927'
                                                                                            0010 10004028(
                                                                                            0010 10014129)
                                                                                            0010 1010422A*
                                                                                            0010 1011432B+
                                                                                            0010 1100442C,
                                                                                            0010 1101452D-
                                                                                            0010 1110462E.
                                                                                            0010 1111472F/
                                                                                            0011 000048300
                                                                                            0011 000149311
                                                                                            0011 001050322
                                                                                            0011 001151333
                                                                                            0011 010052344
                                                                                            0011 010153355
                                                                                            0011 011054366
                                                                                            0011 011155377
                                                                                            0011 100056388
                                                                                            0011 100157399
                                                                                            0011 1010583A:
                                                                                            0011 1011593B;
                                                                                            0011 1100603C<
                                                                                            0011 1101613D=
                                                                                            0011 1110623E>
                                                                                            0011 1111633F?
                                                                                            二进制十进制十六进制图形
                                                                                            0100 00006440@
                                                                                            0100 00016541A
                                                                                            0100 00106642B
                                                                                            0100 00116743C
                                                                                            0100 01006844D
                                                                                            0100 01016945E
                                                                                            0100 01107046F
                                                                                            0100 01117147G
                                                                                            0100 10007248H
                                                                                            0100 10017349I
                                                                                            0100 1010744AJ
                                                                                            0100 1011754BK
                                                                                            0100 1100764CL
                                                                                            0100 1101774DM
                                                                                            0100 1110784EN
                                                                                            0100 1111794FO
                                                                                            0101 00008050P
                                                                                            0101 00018151Q
                                                                                            0101 00108252R
                                                                                            0101 00118353S
                                                                                            0101 01008454T
                                                                                            0101 01018555U
                                                                                            0101 01108656V
                                                                                            0101 01118757W
                                                                                            0101 10008858X
                                                                                            0101 10018959Y
                                                                                            0101 1010905AZ
                                                                                            0101 1011915B[
                                                                                            0101 1100925C\
                                                                                            0101 1101935D]
                                                                                            0101 1110945E^
                                                                                            0101 1111955F_
                                                                                            二进制十进制十六进制图形
                                                                                            0110 00009660`
                                                                                            0110 00019761a
                                                                                            0110 00109862b
                                                                                            0110 00119963c
                                                                                            0110 010010064d
                                                                                            0110 010110165e
                                                                                            0110 011010266f
                                                                                            0110 011110367g
                                                                                            0110 100010468h
                                                                                            0110 100110569i
                                                                                            0110 10101066Aj
                                                                                            0110 10111076Bk
                                                                                            0110 11001086Cl
                                                                                            0110 11011096Dm
                                                                                            0110 11101106En
                                                                                            0110 11111116Fo
                                                                                            0111 000011270p
                                                                                            0111 000111371q
                                                                                            0111 001011472r
                                                                                            0111 001111573s
                                                                                            0111 010011674t
                                                                                            0111 010111775u
                                                                                            0111 011011876v
                                                                                            0111 011111977w
                                                                                            0111 100012078x
                                                                                            0111 100112179y
                                                                                            0111 10101227Az
                                                                                            0111 10111237B{
                                                                                            0111 11001247C|
                                                                                            0111 11011257D}
                                                                                            0111 11101267E~

                                                                                            熟记:

                                                                                            1. \x00 表中第一项,C语言中的字符串结束符

                                                                                            2. \t \x09 tab字符

                                                                                            3. \r\n \x0d\x0a

                                                                                            4. \x30~\x39 字符0~9,\x31 字符1

                                                                                            5. \x41 65 A

                                                                                            6. \x61 97 a

                                                                                            注意:这里的1指定是字符1,不是数字1 UTF-8、GBK都兼容了ASCII

                                                                                            # bytes 初始化

                                                                                            • bytes() 空bytes
                                                                                            • bytes(int) 指定字节的bytes,被0填充
                                                                                            • bytes(iterable_of_ints) -> bytes [0,255]的int组成的可迭代对象
                                                                                            • bytes(string, encoding[, errors]) -> bytes 等价于string.encode()
                                                                                            • bytes(bytes_or_buffer) -> immutable copy of bytes_or_buffer 从一个字节序列或者buffer复制出一个新的不可变的bytes对象
                                                                                            • 使用b前缀定义
                                                                                              • 只允许基本ASCII使用字符形式 b'abc9'
                                                                                              • 使用16进制表示 b"\x41\x61"

                                                                                            bytes类型和str类型类似,都是不可变类型,操作方法类似。

                                                                                            print(b'abcd'[2]) # 返回int,指定是本字节对应的十进制数
                                                                                            
                                                                                            1

                                                                                            # bytearrary 初始化

                                                                                            • bytearray() 空bytearray
                                                                                            • bytearray(int) 指定字节的bytearray,被0填充
                                                                                            • bytearray(iterable_of_ints) -> bytearray [0,255]的int组成的可迭代对象
                                                                                            • bytearray(string, encoding[, errors]) -> bytearray 近似string.encode(),不过返回可变对象
                                                                                            • bytearray(bytes_or_buffer) 从一个字节序列或者buffer复制出一个新的可变的bytearray对象

                                                                                            b前缀表示的是bytes,不是bytearray类型

                                                                                            由于bytearray类型是可变数组,所以,类似列表。

                                                                                            • append(int) 尾部追加一个元素
                                                                                            • insert(index, int) 在指定索引位置插入元素
                                                                                            • extend(iterable_of_ints) 将一个可迭代的整数集合追加到当前bytearray
                                                                                            • pop(index=-1) 从指定索引上移除元素,默认从尾部移除
                                                                                            • remove(value) 找到第一个value移除,找不到抛ValueError异常
                                                                                            • 注意:上述方法若需要使用int类型,值在[0, 255]
                                                                                            • clear() 清空bytearray
                                                                                            • reverse() 翻转bytearray,就地修改
                                                                                            b = bytearray()
                                                                                            b.append(97)
                                                                                            b.append(99)
                                                                                            b.insert(1,98)
                                                                                            b.extend([65,66,67])
                                                                                            b.remove(66)
                                                                                            b.pop()
                                                                                            b.reverse()
                                                                                            print(b) # 输出什么  bytearray(b'Acba')
                                                                                            b.clear()
                                                                                            
                                                                                            1
                                                                                            2
                                                                                            3
                                                                                            4
                                                                                            5
                                                                                            6
                                                                                            7
                                                                                            8
                                                                                            9
                                                                                            10
                                                                                            edit icon编辑此页open in new window
                                                                                            上次编辑于: 2021/6/8 09:28:23
                                                                                            贡献者: clay-wangzhi
                                                                                            上一页
                                                                                            2.3.2 字符串 str
                                                                                            下一页
                                                                                            2.3.4 列表 list & 元组 tuple
                                                                                            备案号:冀ICP备2021007336号
                                                                                            Copyright © 2023 Clay