如何将unicode十六进制数字变量转换为NSString中的字符?

现在我有一系列的unicode数字,我想在UILabel中显示它们,如果我对它们进行硬编码,可以显示它们,但这太慢了,所以我想用变量替换它们,然后更改变量并获取相关字符。 例如,现在我知道unicode是U + 095F,我想在UILabel中显示U + 095F到U + 096f的范围,我可以使用硬编码

NSString * str = [NSString stringWithFormat:@“ u095f”];

但我想这样做

NSInteger十六进制= 0x095f;

[NSString stringWithFormat:@“ u%ld”,(long)hex];

我可以自动更改十六进制,就像使用@"%ld", (long)hex ,所以任何人都知道如何实现它?


您可以使用十六进制字节的缓冲区初始化字符串(您只需提供它的指针)。 重点是,需要注意的是您提供了要应用的字符编码。 具体来说,你应该注意到字节顺序。

这是一个例子:

UInt32 hex = 0x095f;
NSString *unicodeString = [[NSString alloc] initWithBytes:&hex length:sizeof(hex) encoding:NSUTF32LittleEndianStringEncoding];

请注意,只要您将它们用于16位unicode字符,就好像使用%C格式的解决方案一样好; 像emojis这样的32位unicode字符(例如:0x1f601,0x1f41a)将无法使用简单的格式。


喜欢这个:

unichar charCode = 0x095f;
NSString *s = [NSString stringWithFormat:@"%C",charCode];
NSLog(@"String = %@",s); //Output:String = य़

你将不得不使用

[NSString stringWithFormat:@"%C", (unichar)hex];

或直接声明unichar (unsigned short)

unichar uni = 0x095f;
[NSString stringWithFormat:@"%C", uni];

一个有用的资源可能是字符串格式说明符,它将%C列为

16位Unicode字符(unichar),由NSLog()作为ASCII字符打印,或者如果不是ASCII字符,则以八进制格式 ddd或Unicode十六进制格式 udddd打印,其中d是数字。

链接地址: http://www.djcxy.com/p/85239.html

上一篇: How to convert unicode hex number variable to character in NSString?

下一篇: How to get string objects instead of Unicode from JSON?