2012-06-01 28 views
3

請檢查這裏是我的代碼如何將*)xÿª5c'√K'Rk¬É*轉換爲目標C中的純文本?

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它應顯示爲印度是我字符串值,但它被顯示爲)xÿª5c'√K'Rk¬É

回答

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

這是無效的。 @"..."是一個NSString,不是int。

你可以有一個字符數組,像這樣:

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

,你可以變成一個的NSString使用

NSString *strings = [NSString stringWithCString:asciiCode usingEncoding:NSUTF8StringEncoding]; 
+0

您不能使用數組初始值設定項初始化一個'char *'。 – trojanfoe

+0

那麼,一個char []所以... – Cyrille

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對象。

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)。