gpt4 book ai didi

ios - 如何在 Swift 中将代理对转换为 Unicode 标量

转载 作者:搜寻专家 更新时间:2023-10-30 21:56:15 24 4
gpt4 key购买 nike

以下示例取自 Strings and Characters documentation :

enter image description here

55357(U+D83D 十六进制)和 56374(U+DC36 十六进制)是构成 Unicode 标量 U+1F436 的代理项对,即 DOG FACE 字符。有没有办法去另一个方向?也就是说,我可以将代理对转换为标量吗?

我试过了

let myChar: Character = "\u{D83D}\u{DC36}"

但我收到“无效的 Unicode 标量”错误。

This Objective C answerthis project似乎是自定义解决方案,但是 Swift(尤其是 Swift 2.0+)中是否有内置的东西可以做到这一点?

最佳答案

有一些公式可以根据代理对计算原始代码点,反之亦然。来自 https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae :

Section 3.7 of The Unicode Standard 3.0 defines the algorithms for converting to and from surrogate pairs.

A code point C greater than 0xFFFF corresponds to a surrogate pair <H, L> as per the following formula:

H = Math.floor((C - 0x10000) / 0x400) + 0xD800
L = (C - 0x10000) % 0x400 + 0xDC00

The reverse mapping, i.e. from a surrogate pair <H, L> to a Unicode code point C, is given by:

C = (H - 0xD800) * 0x400 + L - 0xDC00 + 0x10000

关于ios - 如何在 Swift 中将代理对转换为 Unicode 标量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31282675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com