3

请检查这里是我的代码

int asciiCode = @"29 78 D8 BB 35 12 63 D5 C3 4B 18 D5 52 6B C2 83";
NSString *strings = [NSString stringWithFormat:@"%c", asciiCode];
NSLog(@"%c",strings);
}

如果值29 78 D8 BB 35 12 63 D5 C3 4B 18 D5 52 6B C2 83它应该显示为india 是我的字符串值,但它显示为)xÿª5c'√K'Rk¬É

4

3 回答 3

5
int asciiCode = @"29 78 D8 BB 35 12 63 D5 C3 4B 18 D5 52 6B C2 83";

这是无效的。@"..."是一个 NSString,而不是一个 int。

你可以有一个 char 数组,像这样:

char *asciiCode = {0x29, 0x78, 0xD8, 0xBB, ...}

您可以使用它变成 NSString

NSString *strings = [NSString stringWithCString:asciiCode usingEncoding:NSUTF8StringEncoding];
于 2012-06-01T12:14:06.943 回答
2

您显示的字符不是 ASCII,因为它们设置了第 8 位,但它们可能是 UTF-8 编码的?如果是这样,您只需将它们视为 NUL 终止的 C 字符串:

unsigned char cstr[] = { 0x29, 0x78, 0xD8, 0xBB, 0x35, 0x12, 0x63, 0xD5, 0xC3,
                         0x4B, 0x18, 0xD5, 0x52, 0x6B, 0xC2, 0x83, 0x0 };
NSString *string = [[NSString alloc] initWithUTF8String:cstr];
NSLog(@"%@",string);

或者:

NSString *string = [NSString stringWithUTF8String:cstr];
NSLog(@"%@",string);

取决于您是否想要保留或自动释放的NSString对象。

于 2012-06-01T12:14:45.837 回答
0

您还可以在字符代码前面加上\x. 例如:

NSString *string = @"\x29 \x78 \xD8 \xBB \x35 \x12 \x63 \xD5 \xC3 \x4B \x18 \xD5 \x52 \x6B \xC2 \x83";
NSLog(@"%@",string);

但请注意,代码应该是十六进制的。例如,这里的 29 是十六进制的 29 (0x29),而不是十进制。

于 2012-06-01T12:31:12.920 回答