我在Javascript中有这段代码:
var f = chr(50) + chr(0) + chr(1) + chr(64) + chr(24) + chr(0) + chr(0) + chr(1) + chr(159) + chr(13) + chr(0) + chr(0) + chr(224) + chr(7);
function chr(AsciiNum) {
return String.fromCharCode(AsciiNum);
}
console.log
将此输出为
2@
à
长度为14。
我正在尝试将其移植到Objective C. 我尝试了以下操作:
NSString *f = [NSString stringWithFormat:@"%c%c%c%c%c%c%c%c%c%c%c%c%c%c",50, 0 ,1, 64 , 24 , 0 , 0 , 1, 159, 13 , 0 , 0 , 224 , 7];
但是在使用NSLog时我收到了与javascript代码不同的输出:
2@ü
我做错了什么?是字符集问题吗?
答案 0 :(得分:0)
好吧,您的问题似乎源于NSString的ASCII支持仅限于严格的7位ASCII编码,这意味着只支持字符0-127。您将不得不使用不同的数据类型来存储字符,而不同的数据类型是unichar
,它支持2 ^ 15-1,因为它是unsigned short
。但是,您需要将其转换为使用此category:
@interface NSString (MNNSStringWithUnichar)
+ (NSString *) stringWithUnichar: (unichar) value;
@end
@implementation NSString (MNNSStringWithUnichar)
+ (NSString *) stringWithUnichar:(unichar) value {
NSString *str = [NSString stringWithFormat: @"%C", value];
return str;
}
@end
或只是NSLog(@"%C", value);