将Javascript字符串构建代码移植到Objective C

时间:2012-07-01 12:55:05

标签: javascript objective-c porting

我在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@ü

我做错了什么?是字符集问题吗?

1 个答案:

答案 0 :(得分:0)

好吧,您的问题似乎源于NSString的ASCII支持仅限于严格的7位ASCII编码,这意味着只支持字符0-127。您将不得不使用不同的数据类型来存储字符,而不同的数据类型是unichar,它支持2 ^ 15-1,因为它是unsigned short。但是,您需要将其转换为使用此category

以Unicode运行的NSString
@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);