UTF-8十六进制到unicode码位(仅限数学)



让我们以Unicode和UTF-8格式的字符和HEX编码为例。
有人知道如何将UTF-8十六进制转换为Unicode代码点仅使用数学操作吗?
。我们从第一行开始。给定227,129,130,如何得到12354?
是否有简单的方法来做到这一点,只使用数学运算?

tbody> <<tr>
Unicode码位 UTF-8 Char
30 42 (12354)e3 (227) 81 (129) 82 (130)
30 44 (12356)e3 (227) 81 (129) 84 (132)
30 46 (12358)e3 (227) 81 (129) 86 (134)

这个视频是完美的来源(观看从6:15),但这里是它的摘要和golang代码示例。我用字母标记从UTF-8字节中取出的位,希望这是有意义的。当你理解了逻辑,就很容易应用位运算符):

tbody> <<tr>中相同的值
Bytes Char UTF-8 Bytes Unicode码位 说明
字节(ASCII)E1。0xxx xxxx
0100 01010x45
1。0xxx xxxx
0100 0101或U+0045
不需要转换,在UTF-8和unicode码点
2字节E1。110 x xxxx
2。10yy yyyy
1100 00111000 10100xC38A
0xxx xxyy yyyy
0000 1100 1010或U+00CA
1。第一个字节
2的前5位。第二个字节的前6位
3-byte1110 xxxx
2。10 yy yyyy
3。10zz zzzz
111000111000 00011000 00100xE38182
xxxx yyyy yyzz zzzz
0011 0000 0100 0010或U+3042
1。第一个字节
2的前4位。第二个字节
3的前6位。第3个字节的前6位
4字节𐄟1。1111 0 xxx
2。10 yy yyyy
3。10 zz睡眠
4。10www
1111 00001001 00001000 01001001 11110xF090_849F
000x xxyy yyyy zzzz zzww www
0000 0001 0000 0001 0001 1111或U+1011F
1。第一个字节
2的前3位。第二个字节
3的前6位。第3个字节
4的前6位。第4个字节的前6位

相关内容

  • 没有找到相关文章

最新更新