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

时间:2014-03-26 23:05:07

标签: objective-c utf-8 nsstring unichar

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

你知道这样做的优雅方式吗?

谢谢! 佩德罗

1 个答案:

答案 0 :(得分:1)

如果您的NSString格式@"U+xxxx",其中 x 是十六进制数字,那么下面是两种获取值的方法,"优雅&# 34;每个人都在旁观者的眼中:

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

b)使用sscanfstrtol。这些是C级API,您可以使用NSStringUTF8String获取C字符串。使用scanf,您可以检查U+并读取十六进制数字,并在一行中设置最大位数 - 如果这是您对#34;优雅"的定义。但是,检查所有输入是否需要花费一些时间。

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

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