-4

在阅读了有关 NSString 的文档后,似乎 NSStrings 可能是 7 位或 8 位(虽然从评论来看,这可能是完全错误的)。我对 Objective-C 很陌生,遇到了一些语法问题。这是我目前的字符串:

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

我得到的错误是“选择器“编码”没有已知的实例方法”。有谁知道将NSString7 位转换为 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),我得到当它应该只是“80”时,值“C2 80”。

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

4

2 回答 2

2

您想获取 C 字符串:

NSString *charles = [NSString stringWithFormat:@"%c", i];
[charles UTF8String];
于 2013-06-18T16:38:52.963 回答
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];
于 2013-06-18T17:28:01.230 回答