如何在十六进制NCR和UTF-8代码单元之间转换?

如何在十六进制NCR和UTF-8代码单元之间转换?,utf-8,utf,Utf 8,Utf,示例:“大红圈”表情符号表示Unicode代码点。在二进制中,它是: 00000001 11110101 00110100 如果您看一下,您可以看到这些位是如何插入到代码点的UTF-8编码中的 Scalar Value First Byte Second Byte Third Byte Fourth Byte 00000000 0xxxxxxx 0xxxxxxx 00000yyy yyxxxxxx

示例:“大红圈”表情符号表示Unicode代码点。在二进制中,它是:

00000001 11110101 00110100
如果您看一下,您可以看到这些位是如何插入到代码点的UTF-8编码中的

Scalar Value                First Byte  Second Byte Third Byte  Fourth Byte
00000000 0xxxxxxx           0xxxxxxx            
00000yyy yyxxxxxx           110yyyyy    10xxxxxx        
zzzzyyyy yyxxxxxx           1110zzzz    10yyyyyy    10xxxxxx    
000uuuuu zzzzyyyy yyxxxxxx  11110uuu    10uuzzzz    10yyyyyy    10xxxxxx

所以你有:

000uuuuu zzzzyyyy yyxxxxxx as
00000001 11110101 00110100
插入位:

11110uuu 10uuzzzz 10yyyyyy 10xxxxxx =
11110000 10011111 10010100 10110100
以十六进制表示的是
F0 9F 94 B4


另一方面,从UTF-8到代码点,检查第一个字节的最高有效位以查看使用了多少字节(从上表中可以清楚看出),然后取出相关位并将它们放在一起


奖金线性艺术:

000uuuuu zzzzyyyy yyxxxxxx as
00000001 11110101 00110100
   │││││ ││││││││ │││││││└────────┐
   │││││ ││││││││ ││││││└────────┐│
   │││││ ││││││││ │││││└────────┐││
   │││││ ││││││││ ││││└────────┐│││
   │││││ ││││││││ │││└────────┐││││
   │││││ ││││││││ ││└────────┐│││││
   │││││ ││││││││ │└─────┐   ││││││
   │││││ ││││││││ └─────┐│   ││││││
   │││││ │││││││└──────┐││   ││││││
   │││││ ││││││└──────┐│││   ││││││
   │││││ │││││└──────┐││││   ││││││
   │││││ ││││└──────┐│││││   ││││││
   │││││ │││└───┐   ││││││   ││││││
   │││││ ││└───┐│   ││││││   ││││││
   │││││ │└───┐││   ││││││   ││││││
   │││││ └───┐│││   ││││││   ││││││
   ││││└────┐││││   ││││││   ││││││
   │││└────┐│││││   ││││││   ││││││
   ││└─┐   ││││││   ││││││   ││││││
   │└─┐│   ││││││   ││││││   ││││││
   └─┐││   ││││││   ││││││   ││││││
11110uuu 10uuzzzz 10yyyyyy 10xxxxxx =
11110000 10011111 10010100 10110100
您基本上是在问“UTF-8编码是如何工作的?”