如何将*)xÿª5c'√K'Rk¬É*转换为目标C中的纯文本?

时间:2012-06-01 12:09:08

标签: iphone xcode nsstring hex nsdata

请检查这里是我的代码

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¬É

3 个答案:

答案 0 :(得分: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];

答案 1 :(得分: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对象。

答案 2 :(得分: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)而不是十进制。