1f534 指的是 Unicode 代码点。在二进制中是:
00000001 11110101 00110100
如果您查看UTF-8 Bit Distribution,您会看到这些位如何插入到代码点的 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