请检查这里是我的代码
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¬É
答案 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, ...}
您可以使用
转换为NSStringNSString *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)而不是十进制。