搞清楚字符编码09-万国码[5]

本文详细介绍了UTF-16与UTF-32这两种编码方式的特点及应用。UTF-16是一种变长存储编码,用于存储基本多文种平面(BMP)内的字符时使用2个字节,超出部分则使用4个字节。而UTF-32则是不变长存储编码,每个字符固定占用4个字节,但由于存在字节浪费的问题而不常用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇博客我们来介绍万国码实际存储编码中的utf-16utf-32

utf-16是什么
  • utf-16是理论编码ucs4的一种实际存储编码
  • 基本单元是2个字节
  • 变长存储,存储BMP时长度是2个字节,存储的不是BMP时长度为4个字节.
utf-16存储ucs4中的BMP

此时uft-16存储ucs4的情况就跟ucs-2存储ucs2的情况一模一样.

utf-16存储大于BMP的ucs4编码

以存储ucs4编码00000000 000010000 11111111 11111111为例

第一步:去掉高位的0

10000 11111111 11111111

第二步:减

将去掉高位0的结果减去0x10000

10000 11111111 11111111
-
1 00000000 00000000
=
1111 11111111 11111111

第三步:填充

将相减的结果按"从低位到高位"的方向填充到110110xx xxxxxxxx 110111xx xxxxxxxx中,填不满的话用补0.

所以最终的编码就是:11011011 11111111 11011111 11111111


utf-32是什么
  • uft-32是理论编码方案ucs4是实际编码方案
  • uft-32有时也被叫作ucs-4
  • 不变长存储,每个编码的长度都是4个字节
不常用
  • 因为uft4只用到了0组17个平面,所以使用不变长存储的utf-32存储的话至少有一个字节是浪费的,非常的不划算.
  • 所以这种存储方案不常使用.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值