python写入中文、用utf-16编码得出二进制字节串_webSocket 二进制传输基础准备-UTF-16和UTF-8转Unicode...

本文介绍如何将UTF-16编码的字符转换为Unicode,详细讲解了UTF-16转Unicode的原理和步骤,包括计算UTF-16编码的高10位和低10位的取值范围,并提供了JavaScript实现的例子。
摘要由CSDN通过智能技术生成

前言

今天来学习UTF8转Unicode,UTF16转Unicode以达成UTF8,UTF16之间的互转。

提炼成函数的公式我并没有放出来,我的目的只是为了更加理解 字符编码之间的关系。

如果你需要转码方式,可以找其他的库,或者根据我文章来进行提炼。

基本利用按位操作符 符号运算符就可以完成。

今天这里只做UTF8转Unicode,UTF16转Unicode, 后续转换可以看前面的文章。

UTF16转Unicode

为了更好的理解,我们来使用Unicode转UTF-16那一期的结果

来进行UTF16转Unicode,U+22222转UTF-16 = [0xd848,0xde22] = '𢈢'(这个字的长度为二,所以要获取他所有的charCodeAt)

function charCodeAt(str){

var length = str.length,

num = 0,

utf16Arr = [];

for(num; num < length; num++){

utf16Arr[num] = '0x'+str[num].charCodeAt().toString(16);

}

return utf16Arr;

}

charCodeAt('𢈢');//['0xD848', '0xDE22']

计算utf-16 4字节的取值范围

上面代码获得了,这个字符的UTF-16编码数组,JS的字符串全部使用的UTF-16编码格式

回顾一下UTF-16的编码方式

将Unicode值减去0x10000,得到20位长的值,再将其分为高10位和低10位,分别为2个字节,高10位和低10位的范围都在 0 ~ 0x3FF,高10位加0xD800,低十位加0xDC00

首先我们先看字节问题,Unicode值在U+10000 ~ U+10FFFF时,会分为 两个2 字节,二进制 8位为一个字节,所以

UTF-16的四个字节的字符是两个 16位的二进制

并且根据UTF-16的编码方式的高位加0xD800 低位加0xDC00得出最小范围值

高10位最小值为0xD800,低10为最小值为0xDC00

再根据 高10位和低10位的范围都在 0 ~ 0x3FF得出最大范围值

高10位最大值为0xD800+0x3FF,低10为最大值为0xDC00+0x3FF

所以高10位的取值范围为 0xD800 ~ 0xdbff

低10位的取值范围为 高10位的取值范围为 0xDC00

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值