utf 8 -将utf -8字符串转换为其整数值/ UniChar(目标C)



我目前正在开发一个Objective C程序,它接收UTF-8字符作为字符串的输入,如"U+0008"。这些字符串的类型是NSString。现在我需要将表示该字符的字符串转换为相应的UniChar (0x0008)。

你知道一种优雅的方法吗?

谢谢!佩德罗

如果你有一个形式为@"U+xxxx"NSString,其中x是十六进制数字,那么以下是两种获取值的方法,每种方法的"优雅"都在旁观者的眼中:

a)使用NSScanner。方法scanString:intoString可用于检查U+,方法scanHexInt:读取十六进制值,方法isAtEnd检查十六进制值后没有任何剩余。此方法不限制十六进制数最多为四位。

b)使用sscanfstrtol。这些是c级api,您可以使用UTF8StringNSString获得c字符串。使用scanf,您可以检查U+,并在一行中读取十六进制数字,设置最大位数-如果这是您对"优雅"的定义。然而,检查所有输入是否被消耗需要一点思考。

还有许多其他方法可以做到这一点,从自己滚动到使用正则表达式(NSRegularExpression)来检查格式并一次性提取4个十六进制数字,准备转换为整数。

注意,如果你看到4个十六进制数字,那么你有一个16位的值,更像UTF-16而不是UTF-8。

最新更新