在阅读有关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票。有人可以解释我做错了什么,以便将来可以避免这种情况吗?
答案 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];