字符编码模板

news/2025/3/28 11:37:47/文章来源:https://www.cnblogs.com/maidongdong/p/18784529

让我们来分析这个问题。图片中的标题是“编码”和“编码模板”,左侧是三个数字 [0,127][128,2047][2048,65535],右侧是对应的编码模板,分别是 0???????110????? 10??????1110???? 10?????? 10??????。问题提到“如果字符占4个字节”,我们需要推断这些编码模板的含义。

分析背景

从编码模板的模式来看,这很像是 UTF-8 编码的变种或类似的多字节编码方式。UTF-8 是一种变长编码方案,根据字符的 Unicode 码点(code point)使用不同长度的字节来表示字符:

  • [0, 127]:1 字节,格式为 0xxxxxxx(7 位)
  • [128, 2047]:2 字节,格式为 110xxxxx 10xxxxxx(11 位)
  • [2048, 65535]:3 字节,格式为 1110xxxx 10xxxxxx 10xxxxxx(16 位)

这些范围和模板与 UTF-8 的编码规则非常相似。? 通常表示可变位(即用来存储字符码点的位)。但问题提到“字符占4个字节”,这需要我们进一步思考。

4字节的含义

在 UTF-8 中,4 字节编码通常用于表示更大的 Unicode 码点范围 [65536, 1114111](即 0x10000 到 0x10FFFF),模板是:

  • 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx(21 位)

但图片中只给出了 1 到 3 字节的编码模板,范围到 [2048, 65535],没有提到 4 字节的模板。然而,问题明确问“如果字符占4个字节”,这可能暗示我们需要推导 4 字节的编码模板,或者假设所有字符都用 4 字节固定长度编码。

假设 1:固定 4 字节编码

如果所有字符都用 4 字节固定长度编码(而不是变长),那就不符合图片中的变长模板了。固定 4 字节编码通常是 UTF-32 的一种形式,每个字符直接用 32 位(4 字节)表示,没有前缀位,直接存储码点值:

  • 模板可能是 xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx(32 位)

但这与图片中的变长编码模板不符,图片明显是变长编码(类似 UTF-8),所以这个假设可能不正确。

假设 2:扩展到 4 字节的变长编码

更合理的解释是,图片展示的是一个类似 UTF-8 的变长编码方案,但问题要求我们推导 4 字节的情况。基于图片的模式,我们可以推测:

  • 1 字节:0???????(7 位,[0, 127]
  • 2 字节:110????? 10??????(5+6=11 位,[128, 2047]
  • 3 字节:1110???? 10?????? 10??????(4+6+6=16 位,[2048, 65535]

按照 UTF-8 的逻辑,4 字节的模板应该是:

  • 4 字节:11110??? 10?????? 10?????? 10??????(3+6+6+6=21 位,[65536, 1114111]

这个模板可以编码更大的范围,符合 Unicode 的最大范围(0x10FFFF)。这里的 ? 表示可变位,用来存储字符的码点。

最终答案

基于图片中的模式和“字符占4个字节”的要求,最合理的解释是问题在问 4 字节编码的模板,延续图片中的变长编码规则。类似 UTF-8 的 4 字节编码模板是:

编码模板:11110??? 10?????? 10?????? 10??????

这表示一个 4 字节的编码,其中:

  • 首字节以 11110 开头,后面 3 位(???)存储码点的高位;
  • 后续 3 个字节以 10 开头,每字节 6 位(??????),共 18 位;
  • 总共可存储 21 位的码点,范围是 [65536, 1114111]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/902323.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国内值得去的955神仙公司排行榜

在科技行业竞争日益激烈、“内卷” 成风的当下,“955” 工作制宛如一股清流,让打工人看到了工作与生活平衡的曙光。今天,咱们就来唠唠国内外那些既有着出色业务,又能让员工享受 “955” 神仙公司。 先解释一下,所谓的955是指: 工作日早9点上班、晚5点下班、一周工作5天,中…

Windows11系统下使用Docker Desktop 部署Nginx

在Windows系统安装完成Docker Desktop后,基于Docker部署Nginx前排提醒: 1. 本教程的前提是已经安装完成Docker Desktop,若还没安装,可以参考博主的另一篇教程:Windows11安装Docker Desktop 2. 操作系统:Windows11,Docker Desktop版本:4.38.0,Nginx版本:1.13.8第一步:…

Ftrans超大附件插件一键解决难题:outlook邮箱大文件怎么发送?

在日常办公中,通过outlook邮箱发送文件是一种至关重要的沟通和协作工具,具有多方面的作用,并且应用场景广泛。但在实际使用中,也会碰到outlook邮箱大文件怎么发送的难题。可以来了解一下: 一、应用场景 1、内部沟通 日常工作安排:上级领导通过邮件向下属布置工作任务,明…

IDEA-idea2013连接Mysql数据库

IDEA-idea2013连接Mysql数据库 右侧DataBase图表,选择Mysql输入用户名和密码 => 点击TestConnection成功会显示点击这里选择schemas

SpringSecurity5(8-权限注解)

Spring Security 提供多种权限注解,如 @PreAuthorize、@PostAuthorize、@Secured 和 @RolesAllowed,用于方法级别的访问控制。@PreAuthorize 适用于方法执行前权限检查,@PostAuthorize 可在方法执行后验证返回值权限,@Secured 和 @RolesAllowed 主要基于角色控制。注解使用…

Windows Server 2025 中文版、英文版下载 (2025 年 3 月更新)

Windows Server 2025 中文版、英文版下载 (2025 年 3 月更新)Windows Server 2025 中文版、英文版下载 (2025 年 3 月更新) Windows Server 2025 LTSC x64 (updated Mar 2025) 请访问原文链接:https://sysin.org/blog/windows-server-2025/ 查看最新版。原创作品,转载请保留出…

分享报表工具核心三种扩展模型示例

报表工具的核心是父子格扩展模型,通过父子格扩展模型实现各种类型报表,例如网格式报表、行式报表、主子报表、分组报表、交叉报表等。报表有三种扩展模型父子格扩展模型双父格扩展模型兄弟格扩展模型父子格扩展模型B7单元格是第7行所有其它单元格的父格,其它单元格随父格扩展…

centos忘记密码

centos6系统忘记密码: 1、在开机启动的时候快速按键盘上的“E”键 或者“ESC”键,会进入如下界面2、选择你忘记密码的内核,再次按“E”,出现下图,选择第二项,(以kernel开头的行)再次按“E”键3、在信息的最后加“空格”,直接输入数字的“1”(如图)或者 键入“single…

.NET 10 Preview 2 增强了 Blazor 和.NET MAUI

.NET 团队 3.18 发布了.NET 10 Preview 2(https://devblogs.microsoft.com/dotnet/dotnet-10-preview-2/)。.NET 10 Preview 2 主要对 Blazor 和.NET MAUI 进行了增强。Blazor 在 ASP.NET Core 网络开发框架中的组件以及.NET MAUI 获得了最多关注。此次更新主要集中在小的修复…

读DAMA数据管理知识体系指南26数据集成实施指南

读DAMA数据管理知识体系指南26数据集成实施指南1. 工具 1.1. 数据转换引擎/ETL工具1.1.1. 数据转换引擎(或ETL工具)是数据集成工具箱中的主要工具,是每个企业数据集成程序的核心1.1.2. 无论是批量的还是实时的,物理的或虚拟的数据都存在运用非常复杂的工具来开发和执行ETL1…

BFS 算法模板及使用

BFS 算法模板及使用 什么是 BFS 算法? BFS (Breadth-First Search) 算法,中文全称广度优先搜索(宽度优先搜索), 区别于 DFS 算法一条路走到黑的本质, BFS 使用扩散性搜索。它将会根据规则一层一层向下搜索,容易发现,BFS 算法找到的路径一定是最短的,同时,它的时间复…

ResNet-152 模型性能评估

ResNet-152 模型在渴望模式下的性能评估为了预热 GPU,在进行 20 次额外迭代以获取模型的平均推理时间之前,先运行 ResNet-152 模型 10 次。n_warmup = 10n_test = 20dtype = torch.bfloat16inference_time=[]mode=[]t_warmup, _ = timed(lambda:model(input_batch), n_warmup…