如何在Swift中将Unicode字符转换为Int

Sur*_*gch 10 unicode integer swift

用户向我的一个答案询问了以下问题.

我有一个unicode角色\u{0D85}.我如何从中获得Int价值?

我打算将它们引用到另一个Stack Overflow Q&A,但我找不到一个.这些是指转换另一个方向:

这些似乎是在询问如何将字符串形式的数字转换为实际数字Int(如转换"1"1).

我将在下面提供一个答案,而不是试图将我的答案放在对提问者的评论中.类型\u{0D85}有点不清楚,但我将涵盖各种可能性.

Sur*_*gch 7

Hex到Int

如果您从一开始就\u{0D85}知道Unicode字符的十六进制值,那么您也可以使用以下格式编写它,因为它Int已经是.

let myInt = 0x0D85                          // Int: 3461
Run Code Online (Sandbox Code Playgroud)

字符串到Int

不过,我假设你有"\u{0D85}"(在引号中)String默认情况下它是一个.因为它是a String,你不能确定你只有Int一般情况下的单一值.

let myString = "\u{0D85}"

for element in myString.unicodeScalars {
    let myInt = element.value               // UInt32: 3461
}
Run Code Online (Sandbox Code Playgroud)

我也可以使用myString.utf16let myInt = Int(element),但是当有可能出现像表情符号这样的东西时,我发现处理Unicode标量值(UTF-32)更容易.(有关详细信息,请参阅此答案.)

Int的字符

Swift Character是一个扩展的字形集群,没有utf16unicodeScalars属性,所以如果你开始时Character将它转换为String第一个,然后按照上面String to Int部分中的指示进行操作.

let myChar: Character = "\u{0D85}"
let myString = String(myChar)
Run Code Online (Sandbox Code Playgroud)