UTF-64设想之排列组合

现有的UTF-8和UTF-16,用不同语言表示相同意思时,字节数相差很多。所以,就有了UTF-64的设想。它的设计目标是:不同语言表示相同意思,需要的字节数相差不多。
运行以下程序,得出所有排列组合。

import itertools as it
a=set()
b=(7,8,10,13,16,21)
for i in range(1,8):for x in it.product(b,repeat=i):if sum(x)<=52:a.add(x)
for x in sorted(a):print(x)
print(len(a),len(str(bin(len(a))))-2)

[7 8 10 13 16 21],sum(x)<=52
3519, 12bit, 12+52=64bit
运行结果:

11 -> (21, 10, 10)
4 -> (21, 10, 10, 7)
3 -> (21, 10, 10, 8)
1 -> (21, 10, 10, 10)
8 -> (21, 10, 13)
1 -> (21, 10, 13, 7)
0 -> (21, 10, 13, 8)
5 -> (21, 10, 16)
0 -> (21, 10, 21)
18 -> (21, 13)
11 -> (21, 13, 7)
4 -> (21, 13, 7, 7)
3 -> (21, 13, 7, 8)
1 -> (21, 13, 7, 10)
10 -> (21, 13, 8)
3 -> (21, 13, 8, 7)
2 -> (21, 13, 8, 8)
0 -> (21, 13, 8, 10)
8 -> (21, 13, 10)
1 -> (21, 13, 10, 7)
0 -> (21, 13, 10, 8)
5 -> (21, 13, 13)
2 -> (21, 13, 16)
15 -> (21, 16)
8 -> (21, 16, 7)
1 -> (21, 16, 7, 7)
0 -> (21, 16, 7, 8)
7 -> (21, 16, 8)
0 -> (21, 16, 8, 7)
5 -> (21, 16, 10)
2 -> (21, 16, 13)
10 -> (21, 21)
3 -> (21, 21, 7)
2 -> (21, 21, 8)
0 -> (21, 21, 10)
3519 12

标志长度选择[7 8 10 13 16 21],原因是用52除以7,商7,即第一个元素;用52除以6,商8,即第二个元素;……;最后,52除以2,商26,unicode最大到21,所以写下21。用52除以3,商17,凑整到16。

上述程序计算了标志长度的不同排列组合,它们加起来,长度小于等于52;而用于描述这些排列组合的数字,不大于3519,占12比特;52+12=64,这是又一个UTF-64方案。

例:存储字符串"设计UTF-64方案",52-16-16-7-7=6,前边的"设计UT"储存于一个64比特之中,并浪费6比特,使用模板(16, 16, 7, 7)。
之后的7+7+7+7+16=44,对应于"F-64方",存储于第二个64比特。
最后一个字,“案”,存储于一个64比特中。
最后,64位全零表示字符串结束。

以64比特为单元存储字符串,每一个64比特,都包括M C两部分。M占12比特,表示上述排列组合中的一个;C占52比特,记录着字符的信息。UTF-64的设计目标,是不同语言表示相同意思,需要的字节数差不多。现在,它可以在64比特里存储7个ASCII字符,或3个汉字。考虑到语言的特性不同,尚未做到字节数一样,但至少向前迈出了一步。

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

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

相关文章

【深度学习的未来:探索无监督学习的潜力】

文章目录 前言无监督学习的基本概念简单的无监督学习示例&#xff1a;K-Means聚类分析代码结论 前言 随着深度学习技术的不断进步&#xff0c;我们正逐渐从依赖大量标注数据的有监督学习转向更加高效和自主的无监督学习。无监督学习旨在让机器从数据中自行发现模式和结构&…

【RuoYi】实现文件的上传与下载

一、前言 首先&#xff0c;最近在做一个管理系统&#xff0c;里面刚好需要用到echarts图和富文本编辑器&#xff0c;然后我自己去看了官网觉得有点不好懂&#xff0c;于是去B站看来很多视频&#xff0c;然后看到了up主【程序员青戈】的视频&#xff0c;看了他讲的echarts图和富…

k8s 部署 Dashboard

Dashboard 是官方提供的一个UI&#xff0c;可用于基本管理K8s资源。 # 在master节点执行# wget \ https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml vi recommended.yaml 增加 nodePort: 30001 和 type: NodePort ...... spec:p…

一步一步写线程之十四并行编程和并行库

一、并行编程 多线程和多进程编程&#xff0c;在早期一般是并发编程&#xff0c;现在基本是并行编程的基础。或者干脆就叫并行编程也没有什么可纠结的。但实际上并发编程和并行编程还是有着很大的不同。在前面的“多核和多CPU编程”系列中&#xff0c;已经对并发和并行的概念以…

利用Python处理DAX多条件替换

小A&#xff1a;白茶&#xff0c;救命啊~~~ 白茶&#xff1a;什么情况&#xff1f; 小A&#xff1a;是这样的&#xff0c;最近不是临近项目上线嘛&#xff0c;有一大波度量值需要进行类似的调整&#xff0c;一个两个倒没啥&#xff0c;600多个&#xff0c;兄弟&#xff0c;救命…

从JS角度直观理解递归的本质

让我们写一个函数 pow(x, n)&#xff0c;它可以计算 x 的 n 次方。换句话说就是&#xff0c;x 乘以自身 n 次。 有两种实现方式。 迭代思路&#xff1a;使用 for 循环&#xff1a; function pow(x, n) {let result 1;// 在循环中&#xff0c;用 x 乘以 result n 次for (let i…

Springboot中使用spel+自定义注解实现权限控制

使用spel+自定义注解实现权限控制的案例很多, 比如springsecurity,本文也是一同样的方式实现权限校验 定义注解 package com.example.demo.anno;import java.lang.annotation.ElementType; import java.lang.annotation.

opencv进阶 ——(九)图像处理之人脸修复祛马赛克算法CodeFormer

算法简介 CodeFormer是一种基于AI技术深度学习的人脸复原模型&#xff0c;由南洋理工大学和商汤科技联合研究中心联合开发&#xff0c;它能够接收模糊或马赛克图像作为输入&#xff0c;并生成更清晰的原始图像。算法源码地址&#xff1a;https://github.com/sczhou/CodeFormer…

如何快速找到 RCE

背景介绍 本文将分享国外白帽子在‘侦察’阶段如何快速发现 RCE 漏洞的经历。以Apache ActiveMQ 的 CVE-2023–46604 为特例&#xff0c;重点介绍如何发现类似此类的漏洞&#xff0c;让我们开始吧。 快速发现过程 在‘侦察’阶段&#xff0c;白帽小哥会保持每周更新一次目标…

1940java swing零售库存管理系统myeclipse开发Mysql数据库CS结构java编程

一、源码特点 java swing 零售库存管理系统 是一套完善的窗体设计系统&#xff0c;对理解SWING java 编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;&#xff0c;系统主要采用C/S模式开发。 应用技术&#xff1a;javamysql 开发工具&#xff1a;…

适合技术小白学习的项目1863java在线视频网站系统 Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java在线视频网站系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助采用了java设计&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统采用web模式&#xff0c;系统主要采用B/S模式开发。 开发环境为TOMCAT7.0,Myeclipse8.5开发…

数据库、数据表的基本操作

1.数据库的基本操作 &#xff08;1&#xff09;创建数据库 &#xff08;2&#xff09;删除数据库 &#xff08;3&#xff09;将数据库的字符集修改为gbk gbk是汉字内码扩展规范&#xff0c;是GB2312和GB13000的扩展&#xff0c;主要用于简体中文。 &#xff08;4&#xff09;…

LabVIEW在高校电力电子实验中的应用

概述&#xff1a;本文介绍了如何利用LabVIEW优化高校电力电子实验&#xff0c;通过图形化编程实现参数调节、实时数据监控与存储&#xff0c;并与Simulink联动&#xff0c;提高实验效率和数据处理能力。 需求背景高校实验室在进行电机拖动和电力电子实验时&#xff0c;通常使用…

前端框架安全防范

前端框架安全防范 在现代Web开发中&#xff0c;前端框架如Angular和React已经成为构建复杂单页面应用&#xff08;SPA&#xff09;的主流工具。然而&#xff0c;随着应用复杂度的增加&#xff0c;安全问题也变得越来越重要。本文将介绍如何在使用Angular和React框架时&#xf…

Java中的synchronized关键字详解

Java中的synchronized关键字详解 1. 引言 在Java编程中&#xff0c;多线程是提高应用性能的重要手段之一。然而&#xff0c;多线程环境下共享资源的访问控制成为必须面对的问题。synchronized关键字作为Java语言提供的一种同步机制&#xff0c;能够有效地解决这一问题。本文将…

施耐德 BAS PLC 基本操作指南

CPU 型号 项目使用的 PLC 型号为&#xff1a;施耐德昆腾 Quantum 140 CPU 67160 P266 CPU &#xff0c;支持热备冗余&#xff0c;内部存储 1024K&#xff0c;支持 2 个 PCMCIA 扩展卡槽CPU 模块自带接口&#xff1a;MB 串口接口、MB 串口接口、USB 接口、以太网接口&#xff…

MATLAB算法实战应用案例精讲-【数模应用】联合分析(附python和MATLAB代码实现)

目录 前言 算法原理 什么是联合分析? 联合分析的基本原理与步骤

【HarmonyOS】List组件多层对象嵌套ForEach渲染更新的处理

【HarmonyOS】List组件多层对象嵌套ForEach渲染更新的处理 问题背景&#xff1a; 在鸿蒙中UI更新渲染的机制&#xff0c;与传统的Android IOS应用开发相比。开发会简单许多&#xff0c;开发效率提升显著。 一般传统应用开发的流程处理分为三步&#xff1a;1.画UI&#xff0c;…

TiDB-从0到1-分布式存储

TiDB从0到1系列 TiDB-从0到1-体系结构TiDB-从0到1-分布式存储TiDB-从0到1-分布式事务TiDB-从0到1-MVCC 一、TiDB-DML语句执行流程&#xff08;增删改&#xff09; DML流程概要 1、协议验证 用户连接到TiDB Server后首先工作的是Protocol Layer模块&#xff0c;该模块会对用…

mysql表字段超过多少影响性能 mysql表多少效率会下降

一直有传言说&#xff0c;MySQL 表的数据只要超过 2000 万行&#xff0c;其性能就会下降。而本文作者用实验分析证明&#xff1a;至少在 2023 年&#xff0c;这已不再是 MySQL 表的有效软限制。 传言 互联网上有一则传言说&#xff0c;我们应该避免单个 MySQL 表中的数据超过 …