获取NSString的Unicode点并将其放入另一个NSString

时间:2012-03-22 20:24:55

标签: objective-c cocoa unicode nsstring

NSString获取Unicode值的最简单方法是什么?例如,

NSString *str = "A";
NSString *hex;

现在,我想将hex的值设置为str的Unicode值(即0041)...我将如何进行此操作?

2 个答案:

答案 0 :(得分:6)

unichar类型定义为16位unicode值(例如,description of the %C specifier中间接记录),您可以从给定位置获取unichar使用characterAtIndex:NSString,或者如果您希望从NSString更快地填充C阵列的单个字符,请使用getCharacters:range:,而不是逐个查询它们。

NSUTF32StringEncoding也是一个有效的字符串编码,以及一些特定于字节序的变体,以防您希望绝对未来证明。你会得到一个使用更长途的getBytes:maxLength:usedLength:encoding:options:range:remainingRange:的C数组。

编辑:所以,例如。

NSString *str = @"A";

NSLog(@"16-bit unicode values are:");
for(int index = 0; index < [str length]; index++)
    NSLog(@"%04x", [str characterAtIndex:index]);

答案 1 :(得分:3)

您可以使用

NSData * u = [str dataUsingEncoding:NSUnicodeStringEncoding];
NSString *hex = [u description];

您可以通过NSUTF8StringEncoding,NSUTF16StringEncoding(与NSUnicodeStringEncoding相同)或NSUTF32StringEncoding或许多其他值替换NSUnicodeStringEncoding。

参见here  更多