首页 > 编程语言 >流畅的python--第四章

流畅的python--第四章

时间:2024-05-15 17:34:13浏览次数:23  
标签:字符 字节 编码 python bytes -- Unicode 序列 第四章

Unicode文本和字节序列

字符串是较简单的概念,一个字符串就是一个字符序列。问题在于“字符”是如何定义的。
在2021年,“字符”的最佳定义是Unicode字符。因此从Python3str对象中获取的项是Unicode字符。Unicode标准明确区分字符的标识和具体的字节表述。

  • 字符的标识,即码点,是0~1 114 111范围内的数(十进制),在Unicode标准中以4~6个十六进制数表示,前加“U+”,取值范围是
    U+0000~U+10FFFF。例如字母A的码点是U+1D11E
  • 字符的具体表述取决于所用的编码。编码是在码点和字节序列之间转换时使用的算法。例如字母A(U+0041)UTF-8编码中使用单个字节\x41表述,
    而在UTF-16LE编码中使用字节序列\x41\x00表述。再比如,欧元符号(U+20AC)UTF-8编码中需要3个字节,即\xe2\x82\xac,而在UTF-16LE中,同一个码点编码成两个字节,即\xac\x20.
    把码点转换成字节序列的过程叫编码,把字节序列转换为码点的过程叫解码。

.encode()是编码,将字符序列转为字节序列,为机器核心转储的字节序列,.decode()是解码,为字节序列转为Unicode字符串,为人类可读的文本序列。

字节概要

Python3引入的不可变类型bytes和可变类型bytearraybytesbytearray中的项是0~255(含)的整数。

虽然二进制序列其实是整数序列,但是它们的字面量表示法表明其中含有ASCII文本。因此,字节的值可能会使用以下4种不同方式显示。

  • 十进制代码在32~126范围内的字节(从空格到波浪号),使用ASCII字符本身。
  • 制表符、换行符、回车符和\对应的字节,使用转义序列\t,\n,\r\\
  • 如果字节序列同时包含两种字符串分隔符'",整个序列使用'区隔,序列内的'转义为\'
  • 其他字节的值,使用十六进制转义序列(例如,\x00是空字节)。

因此,在案例b'caf\xc3\xa9'中前三个字节b'caf'在可打印的ASCII范围内,后两个字节则不然。
二进制序列有一个类方法是str没有的,名为fromhex,它的作用是解析十六进制数字对,构建二进制序列。

构建bytes或bytearray实例还可以调用各自的构造函数,传入以下参数。

  • 一个str对象和encoding关键字参数
  • 一个可迭代对象,项为0~255范围内的数
  • 一个实现了缓冲协议的对象(例如bytesbytearraymemoryviewarray.array)。构造函数把源对象中的字节序列复制到新创建的二进制序列中。

使用数组中的原始数据初始化bytes对象

基本的编码解码器

标签:字符,字节,编码,python,bytes,--,Unicode,序列,第四章
From: https://www.cnblogs.com/bonne-chance/p/18194339

相关文章

  • mit6.828笔记 - lab3 Part A:用户进程和异常处理
    简单回顾在开始lab3的学习之前,我们先简单回顾下到目前为止,我们的内核能做了什么:lab1中,我们学习了PC启动的过程,看到BIOS将我们编写的bootloader载入内存,然后通过bootloader将内核载入内存。同时,使用了一个写死的临时页表(entry_pgdir)完成了简单的地址映射;我们的内核最后执......
  • nodejs 原生服务起一个httpServer
    离开express、koa、egg你还会利用原生node写后端的http服务吗?这里有一个例子,原生node起http服务。返回了静态页面文件、字符串拼接的html,json对象和优化404。做个备忘吧!import{createServer}from"http";importpathfrom'path';import{__dirname}from'./utils/i......
  • Delphi DX10.2安装TeeChartPro2022找不到指定文件
    1、显示报错TeeChartProCompilationstarted:2024-05-1517:12:48Win32v25Enterprise(Delphi10.2andC++Builder10.2Update3)(C++)ERRORTee925Thisversionoftheproductdoesnotsupportcommandlinecompiling.TeeUI925Thisversionoftheproductdoe......
  • mit6.828笔记 - lab3 Part B:页面故障、断点异常和系统调用
    PartB页面故障、断点异常和系统调用虽然说,我们故事的主线是让JOS能够加载、并运行user/hello.c编译出来的镜像文件。虽然说,经过PartA最后几节,我们初步实现了异常处理的基础设施。但是对于操作系统来说,还远远不够,比如说那个trap_dispatch还没完成。所以在回到故事主线之......
  • 教你一招,一键解锁云盘与NAS自动同步!
    想象一下数字生活就像一座繁忙的都市云盘是你的空中阁楼俯瞰着整个城市的美景而NAS是坚实的地基承载着所有珍贵的记忆 那如何让数据在城市的高空与地面之间自由穿梭呢?别急!铁威马来帮你!TOS6创新功能:云盘挂载教你轻松实现云盘与NAS的无缝同步准备好了吗?让我们系好安......
  • 智慧园区EasyCVR视频智能管理方案:构建高效安全园区新视界
    一、背景分析园区作为城市的基本单元,是最重要的人口和产业聚集区。根据行业市场调研,90%以上城市居民工作与生活在园区进行,80%以上的GDP和90%以上的创新在园区内产生,可以说“城市,除了马路都是园区”。园区形态多,数量大,包括产业园区、教育园区、制造业园区、科研园区等。全国各地......
  • 使用qemu-system-x86_64和cloud-init修改qcow2镜像密码
    方法来自于:CoretutorialwithQEMU依次执行下面的命令sudoaptinstallqemu-system-x86mkdirtempcdtemp#以此镜像为例wgethttps://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.imgcat<<EOF>user-data#cloud-configpassword:123ch......
  • 医疗行业面临的网络安全挑战及应对策略
    网络攻击已经成为各行各业日益严重的威胁,但医疗行业尤其容易受到影响。过去的2023年,数据泄露事件日趋严重,而医疗行业的数据泄露事件占整体的79.7%。虽然患者、医疗服务提供者和决策者都对保护医疗信息有所关注,但关键点在于提供电子健康记录(EHR)系统的技术公司。这些系统中包含大量......
  • C#十六进制转成byte类型
    在C#中,可以使用Convert.ToByte方法将十六进制的字符串转换成byte类型。以下是一个简单的例子:  stringhexValue="A3";//示例十六进制字符串bytebyteValue=Convert.ToByte(hexValue,16);//转换成byte如果你有一个十六进制的字符串数组或者单个十六进制......
  • Harbor怎么修改域名配置
    Harbor修改访问域名配置修改harbor.yml配置文件#/opt/harbor/harboy.yml修改域名设置生效#./install.sh直接修改配置文件在harbor根目录#common/config/core/env#common/config/registry/config.yml重启docker生效#docker-composedown#docker-comp......