【发布时间】:2021-10-20 09:44:11
【问题描述】:
让我们来看看这张表,其中包含 Unicode 和 UTF-8 中的字符和 HEX 编码。
有谁知道如何仅使用数学运算将 UTF-8 十六进制转换为 Unicode 代码点?
例如。让我们占据第一行。给定227,129130怎么得到12354?
有什么简单的方法可以只使用数学运算吗?
| Unicode code point | 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) | う |
* 来源:https://www.utf8-chartable.de/unicode-utf8-table.pl?start=12288&unicodeinhtml=hex
【问题讨论】:
-
按位与(&)、或(|)和左移(((227 & 0x0f) << 12) | ((129 & 0x3f) << 6) | (130 & 0x3f) ->
12354。请注意,这是 3 字节 UTF-8 序列的固定数学运算,不检查无效序列。