发布发送值> 127

时间:2013-06-18 16:33:33

标签: ios objective-c encoding nsstring bits

在阅读有关NSString的文档后,似乎NSStrings可能是7位或8位(虽然根据评论判断,这可能是完全错误的)。我是Objective-C的新手,遇到了一些语法问题。这是我的字符串:

NSString *charles = [[NSString stringWithFormat:@"%c", i] encoding:NSUTF8StringEncoding];

我得到的错误是“没有已知的选择器实例方法”编码“”。有没有人知道将NSString从7位转换为8位的正确方法?

更新

unichar value;
    for (value = 0; value < 255; value++)  {
[_device writeToTerminal:[NSString stringWithFormat:@"%C", value]];

}

现在,0-127打印完美。终端上的输出符合预期:01,02 ..... A,B,C ...... 1A,1B,1C等 但是,一旦我达到127以上(打印为7F),我得到的值是“C2 80”,它应该只是“80”。

另外,我为在我的问题中做错的事情道歉,以保证3票。有人可以解释我做错了什么,以便将来可以避免这种情况吗?

2 个答案:

答案 0 :(得分:2)

你想抓住C字符串:

NSString *charles = [NSString stringWithFormat:@"%c", i];
[charles UTF8String];

答案 1 :(得分:1)

创建一个NSString,其中包含一个给定Unicode的字符,范围为​​0 .. 0xFFFF 您可以使用%C格式:

unichar c = ...;
NSString *charles = [NSString stringWithFormat:@"%C", c];

或使用stringWithCharacters

unichar c = ...;
NSString *charles = [NSString stringWithCharacters:&c length:1];

要获取原始字符代码:

unichar c = [charles characterAtIndex:0];